V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
patrickstar
V2EX  ›  程序员

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

  •  
  •   patrickstar · 2016-09-01 13:43:07 +08:00 · 2534 次点击
    这是一个创建于 2792 天前的主题,其中的信息可能已经有所发展或是发生改变。
    下面的代码在 g++ 下没有任何问题,但是在 VS2013 下直接编译错误 (syntax error : missing ';' before identifier 'RELEASE')

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

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

    另外这个不需要加""去连接
    #define LIB_BUILDTIME __DATE__ __TIME__
    这样就是一个字符串了
    acros
        5
    acros  
       2016-09-01 14:05:41 +08:00
    @wevsty 我还以为他把 RELEASE 前的下划线漏了···
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4152 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 04:11 · PVG 12:11 · LAX 21:11 · JFK 00:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.