我正在编译大量使用srand()和rand()的文件,而不包括stdlib.h。 我知道这是不好的做法,但由于我无法更改我正在编译的文件,因此不能在每个文件中插入必要的include语句。
如何配置我的编译器以允许隐式包含stdlib函数?另外,有没有办法以相同的方式隐式使用std命名空间?
编辑:使用g ++
编辑:看起来这就是答案(至少在第一部分)。要编译文件,就像包含stdlib.h一样,请使用选项-include stdlib.h
答案 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