GCC混淆标准标题与个人名称相同

joH*_*oH1 -5 c gcc include

在我正在进行的项目中,我命名了我的一个文件math.h,其中obvisouly也是标准库头的名称.

一切运行良好,直到我开始使用gcc的-I选项:我整理我的文件到不同的目录,比如src,objinc页眉.

我结束了类似的事情

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不认为我的标题是标准的?
当然我可以重命名该文件,但这只是避免了这个问题 - 即使我最终这样做,我希望知道解决方案,以防我再次遇到这个问题.

Ant*_*ala 6

必须重命名您的文件.C11标准表示在当前状态下行为未定义.C11 7.1.2p3

  1. 如果与上述之一具有相同名称的文件<>分隔序列(未作为实现的一部分提供)放置在搜索包含源文件的任何标准位置,则行为未定义.

否则,如果您正在编译内核或类似内容,请使用-ffreestanding.