找不到系统 header 文件的 C++ 版本

C++ version of system header files cannot be found

与“...在项目中添加 sqlite.c 之后”我应该继续,因为一切都很好。 Headers 像 cassertcerrnocstdio,比方说,c* 确实存在并且通常编译器会看到它们并编译。

sqlite3.c 添加到项目后,现在我想象那些 header 文件的 .h 版本(assert.herrno.h 等)首先被添加到编译中,然后防止在其他文件中包含 c* header 文件。

编译器报告:"cassert: No such file or directory",这不是事实。

我正在编译 qmake/gcc

我该如何解决这个问题?

编辑: 看来问题与预编译header有关。在@Caduchon 的评论之后,我再次查看了编译日志,然后我看到了预编译 header:

gcc -x c++-header pre.hpp

...

gcc -x c-header pre.hpp

预编译 header 加入编译2次。第二个是c-header。我想象当项目中没有 .c 文件时,预编译的 header 仅作为 c++-header 处理了 1 次。但是当还有一个 .c 文件时,它也被编译为 c-header.

问题是因为预编译 header。当一个 .c 文件被引入项目时,预编译的 header 也被编译为 c-header 文件。为 C-compiler 注释掉 header 的 C++ 部分解决了问题:

#ifdef __cplusplus
#endif