繁体   English   中英

有没有一种方法可以通过编译器的命令行添加代码?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM