文档 告诉我可以使用 /D 命令行开关来实现这个功能,像这样:
CL /DDEBUG TEST.C
将定义一个 DEBUG 符号。
CL /DDEBUG=2 TEST.C
如果我想获得与字符串定义相当的值,该怎么办呢?
将其赋值为2即可。
#define DEBUG "abc"
?
文档 告诉我可以使用 /D 命令行开关来实现这个功能,像这样:
CL /DDEBUG TEST.C
CL /DDEBUG=2 TEST.C
如果我想获得与字符串定义相当的值,该怎么办呢?
将其赋值为2即可。
#define DEBUG "abc"
?
CL /DDEBUG=\"abc\" TEST.C
这个方法适用于我在VS2013中的操作:
/D_STRING="\"abc\""
#define _STRING "abc"
/D_STRING="abc"
这将相当于
#define _STRING abc
CL /DDEBUG=abc TEST.C
或者
CL /DDEBUG="abc" TEST.C
/DDEBUG#\"abc\"
我没有VC来为您测试,但原则上以下内容应该可以工作:
CL /DSTRINGIFY(X)=#X /DDEBUG=STRINGIFY(abc) TEST.C
更新:
正如Kuber-Ober所指出的那样,VC在这里似乎没有做正确的事情。通过一个简单的示例进行测试,它生成了:
const char * s = STRINGIFY(abc);
它可能适用于其他编译器,例如以下g ++命令行可行:
g++ -D'STRINGIFY(X)=#X' -D'DEBUG=STRINGIFY(abc)' t.cc -E
# 1 "t.cc"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "t.cc"
const char * s = "abc";