使用stdlib函数而不包括stdlib.h

时间:2013-03-22 16:46:25

标签: c++ compilation std

我正在编译大量使用srand()和rand()的文件,而不包括stdlib.h。 我知道这是不好的做法,但由于我无法更改我正在编译的文件,因此不能在每个文件中插入必要的include语句。

如何配置我的编译器以允许隐式包含stdlib函数?另外,有没有办法以相同的方式隐式使用std命名空间?

编辑:使用g ++

编辑:看起来这就是答案(至少在第一部分)。要编译文件,就像包含stdlib.h一样,请使用选项-include stdlib.h

3 个答案:

答案 0 :(得分:2)

正如您现在提到的那样,您正在使用GCC,您可以使用-include标志。其他编译器可能有等价物。


如果您的编译器没有这样的标志,您可以使用以下不完全认真的解决方案,但这应该可以使用:

<强> nice.cc

#include <stdlib.h>
#include "naughty.cc"

(其中naughty.cc是原始源文件)。

当然,使用合适的构建系统,您可以自动生成漂亮的包装文件。

答案 1 :(得分:1)

既然你已经接受了不好的练习,那该怎么样:

cat > foo.c << EOF
#include <stdlib.h>
#include "file-to-compile.c"
EOF

${CC} foo.c

答案 2 :(得分:1)

您正在使用GCC,因此您可以使用-include选项(来自the manual):

  

处理文件,好像#include“file”出现在主要源文件的第一行。

例如:

g++ -include stdlib.h foo.c