我使用GCC for C和G ++ for C ++。我无法在任何地方提供每个cmdline选项。
说我可以轻松地用{/ 1>替换-DHAVE_CONFIG_H
#define HAVE_CONFIG_H
所有cmdline参数都可以被#行替换吗?如果没有,args 是可替换的?
我更喜欢-O2
-std=xxx
-L
-I
。
修改:我遇到了这个问题,因为当我将代码上传到在线评审员时,它总是会明确地编译它(gcc xxx.c -o xxx -lm
)并赢得了#t为我打开任何优化标志。我无法修改他们的命令行,所以我想在源代码中使用它。
答案 0 :(得分:0)
我无法在任何地方提供每个cmdline选项。
为什么呢?您使用build automation之类的GNU make工具吗?我相信你应该使用它,那么在你的Makefile
中添加一些适当的行就是一个问题(可能就像添加一行CXXFLAGS += -DHAVE_CONFIG_H -O2 -std=c++11
)
所有cmdline参数都可以被#行替换吗?如果没有,什么args可以替换?
您的意思是可由预处理程序指令替换。阅读documentation of cpp
实际上,大多数编译器选项不可由预处理器指令替换;特别是
-std=
-L
和-l
以及链接器的任何其他选项
-I
以及包含目录的类似选项
但是,-O2
可以设置__attribute__((optimize("O2"))
和某些其他优化标记,例如function attributes。 #pragma GCC optimize "-O2"
(请参阅this)和function specific option pragmas,例如{}
def search_query(request):
query_params = request.query_params.dict()
。请注意,这是GCC特有的。
我建议您花几个小时阅读documentation of GCC。
您也可能更改spec file,但我不建议您这样做。