什么是-D编译器标志C++(clang,GNU,MSVC)
What is the -D compiler flag C++ (clang, GNU, MSVC)
好的,我假设-D
前缀意味着#define
,不管后面跟着什么变量名,但我找不到任何关于编译器标志的makefile功能的文档。
CXX=clang -DTHISISPREPROCESSORVARIABLE
因此,生成过程中的-DTHISISPREPROCESSORVARIABLE
将定义预处理器变量THISISPREPROCESSORVARIABLE
,并编译后续的cout
。
#ifdef THISISPREPROCESSORVARIABLE
std::cout << "this should exist with the -D" << endl;
#endif
这是正确的假设吗?它似乎有效,只是有人能确认这个-D
指的是#define
吗?(有人链接到一些可以填写所有这些命令定义的makefile文档吗?)
GCC,MSVC,以及英特尔,所有这些都记录了这个标志,Clang默认情况下只使用GCC标志。我刚刚在Clang的帮助页面waaaay底部找到了它(对于windows的Clang cl),harmic在这里更清楚地找到了它。
执行
clang-cl /?
以查看支持的选项列表:/D <macro[=value]>
定义宏
harmic观察到,这些是编译器标志,与makefile完全无关,这就是为什么在makefile文档中找不到它的原因。这些标志可以放在生成文件中,生成文件会将它们传递给编译器,但它们不是生成文件的一部分。
相关文章:
- 奇怪的结构&GCC&clang(void*返回类型)
- 数据成员SFINAE的C++17测试:gcc vs clang
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 我可以将一个用clang c++11编译的对象与另一个用c++17编译的对象链接起来吗
- Clang bug?使用指针作为模板参数
- clang整洁10忽略了我的NOLINT命令
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 在clang++预处理器中确定gcc工具链版本
- 为什么 Clang 不允许"and"作为函数名称?
- 带有 -stdlib=libc++ 的 clang++ 9.0.1 找不到<optional>
- clang格式:宏的缩进
- CLANG 编译器 说:变量"PTR"可能未初始化
- clang格式:禁用排序包含
- 为什么lambda在clang上崩溃而不是在gcc上崩溃
- gcc和clang在表达式是否为常量求值的问题上存在分歧
- CLANG与GNU编译器集合-在GNU中编译,但在CLANG中失败
- 什么是-D编译器标志C++(clang,GNU,MSVC)
- 在 mac 上的 gnu/clang 编译器中定义相对于可执行文件的框架路径
- 在使用GNU Make和clang的架构x86_64中没有找到ld: symbol(s)