VS 2013 下如何进行 #define 啊(C++)

2016-09-01 13:43:07 +08:00
 patrickstar
下面的代码在 g++ 下没有任何问题,但是在 VS2013 下直接编译错误 (syntax error : missing ';' before identifier 'RELEASE')

#define LIB_BUILDTIME RELEASE " " __DATE__ " " __TIME__
const char version_string[] = "$Build: " LIB_BUILDTIME " $";

不知道为何在 VS 2013 下无法链接字符串
2539 次点击
所在节点    程序员
5 条回复
acros
2016-09-01 13:55:35 +08:00
不知道从哪开始吐槽好,你是想输出编译时间?
C++字符串链接是##
wevsty
2016-09-01 13:56:17 +08:00
VS 下面并没有 RELEASE 这样的一个预处理宏定义,对 VS 来说所以 RELEASE 并不是一个有效的字符串,是一个未知的东西,所以也不可能做字符串拼接。
wevsty
2016-09-01 14:04:07 +08:00
@acros 楼主这样直接"str1""str2"也是可以的语法上是允许的,编译器会自动处理拼接字符串
acros
2016-09-01 14:04:52 +08:00
哦。我明白楼主第一句的意思了
RELEASE 和 DEBUG 默认没有声明的, vs 下是_DEBUG 吧

另外这个不需要加""去连接
#define LIB_BUILDTIME __DATE__ __TIME__
这样就是一个字符串了
acros
2016-09-01 14:05:41 +08:00
@wevsty 我还以为他把 RELEASE 前的下划线漏了···

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/303198

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX