如何控制gcc/g ++自动包含标题的方式?

Dav*_*dia 8 gcc compilation g++ header include

过去,当我尝试将一些在Mac OS X上编写的C++代码移植到Linux系统上,或尝试使用较新版本的gcc/g ++旧代版本编写代码时,我遇到了麻烦:

似乎某些(较旧的?)版本的gcc/g ++会自动为您包含一些头文件.

例如,使用的代码printf应该是必需的#include <stdio.h>.使用的代码memcpy应该是必需的#include <string.h>.但根据我正在使用的gcc版本,它偶尔会包含这些内容.

当我忘记包含某些东西然后在我去另一个系统上编译代码之前永远不会出错时,它会造成严重破坏.在那时,它是一个在整个项目中运行并修复包含的游戏.

有没有其他人遇到这个?有没有办法强制gcc自动包含或不自动包含?或者,有没有办法知道它是什么自动包含?

小智 5

-include file进程文件,好像#include"file"出现在主源文件的第一行.但是,搜索文件的第一个目录是预处理器的工作目录,而不是包含主源文件的目录.如果在那里找不到,则在#include"..."搜索链的其余部分中搜索正常.如果给出了多个-include选项,则文件将按照它们在命令行中显示的顺序包含在内.

http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html


Pre*_*gha 3

您确定不是其他标头将这些标头拉入其中,而在其他平台上却没有这样做?