在我正在进行的项目中,我命名了我的一个文件math.h,其中obvisouly也是标准库头的名称.
一切运行良好,直到我开始使用gcc的-I选项:我整理我的文件到不同的目录,比如src,obj和inc页眉.
我结束了类似的事情
gcc ... -Iinc/
Run Code Online (Sandbox Code Playgroud)
现在我的问题是我使用的另一个库(SDL,顺便说一句)#include是标准的 math.h头文件(位于/usr/include/math.h),而GCC给它自己的math.h(在like中找到/home/me/my_project/inc/math.h),显然这不能编译.
所以我的问题是,如何让GCC不认为我的标题是标准的?
当然我可以重命名该文件,但这只是避免了这个问题 - 即使我最终这样做,我希望知道解决方案,以防我再次遇到这个问题.
您必须重命名您的文件.C11标准表示在当前状态下行为未定义.C11 7.1.2p3
- 如果与上述之一具有相同名称的文件
<和>分隔序列(未作为实现的一部分提供)放置在搜索包含源文件的任何标准位置,则行为未定义.
否则,如果您正在编译内核或类似内容,请使用-ffreestanding.