![](/img/trans.png)
[英]Can I pass a preprocessor definition to the resource compiler through the command line?
[英]is there a way to prepend code through the command line of a compiler?
假设我有这个:
int main() { return a; }
我想调用编译器并进行编译:
g++ a.cpp --PREPEND-CODE-FLAG="int a = 5;"
有没有办法做到这一点?
请注意,我知道我可以插入预处理器定义为a
通过命令行,但我在寻找一种方式来预先考虑真正的C ++代码,当前转换单元。
目前,我正在使用该代码生成一个单独的标头,并将其包含在g ++ / clang的-I
标志中
您已经用与不同C ++实现有关的几个标签标记了这个问题,这表明您正在寻找一种跨平台的解决方案。 不存在。
该标准没有规定翻译单元如何传递给编译器。 例如,它永远不会假定翻译单位是单个文件。 如果将g++
与标准外壳一起使用,则可以例如通过执行以下命令来组成翻译单元:
{
echo 'int a = 5';
echo '#line 1 a.cpp'
cat a.cpp
} | g++ -Wall -x c++ -
可以在Unix平台上使用的大多数C ++编译器都可以工作(有微小的变化),但是显然不适合Windows平台。 也许其他事情会是。 但是,无论您使用哪种解决方案,都将针对您所处的环境进行个性化设计。
$ g++ -DPREPENDED_CODE="int a = 5;" nod.cpp
$ ./a.out
$ echo $?
5
$
其中nod.cpp是:
PREPENDED_CODE
int main()
{
return a;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.