提问者:小点点

找不到C++版本的系统头文件[关闭]


使用“。。。在项目中添加sqlite.c之后”,我应该继续,因为一切都很好。 像cassertcerrnocstdio这样的头确实存在,而且通常编译器会看到它们并进行编译。

在将sqlite3.c添加到项目中之后,现在我想象这些头文件的.h版本(assert.herrno.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


共1个答案

匿名用户

问题是由于预编译头造成的。 当一个.c文件被引入到项目中时,预编译头也被编译为c-header文件。 注释掉C编译器头的C++部分解决了问题:

#ifdef __cplusplus
#endif

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(找不到|c++|版本|系统|头文件|关闭)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?