使用“。。。在项目中添加sqlite.c之后”,我应该继续,因为一切都很好。 像cassert
,cerrno
,cstdio
这样的头确实存在,而且通常编译器会看到它们并进行编译。
在将sqlite3.c
添加到项目中之后,现在我想象这些头文件的.h
版本(assert.h
,errno.h
等)首先被添加到compilaton中,这样就可以防止在其他文件中包含C*
头文件。
编译器报告如下:“Cassert:No such file or directory”
,这不是事实。
我正在用qmake
/gcc
编译。
我该怎么解决呢?
编辑:似乎问题与预编译头有关。 在@Caduchon的评论之后,我又看了一遍编译日志,然后我看到了这个预编译头:
gcc -x c++-header pre.hpp
。。。
gcc -x c-header pre.hpp
预编译头被添加到编译中2次。 第二个是C-header
。 我想当项目中没有.c
文件时,预编译头仅作为C++-header
处理一次。 但是当还有.c
文件时,它也被编译为c-header
。
问题是由于预编译头造成的。 当一个.c
文件被引入到项目中时,预编译头也被编译为c-header
文件。 注释掉C编译器头的C++
部分解决了问题:
#ifdef __cplusplus
#endif