• 3625阅读
  • 2回复

一个宏定义的问题 [复制链接]

上一主题 下一主题
离线sbtree
 
只看楼主 正序阅读 楼主  发表于: 2011-08-24
#define VERSION_MAJOR 2
#define VERSION_MINOR 1
#define VERSION_REVISOR 1

希望把上面的三个宏通预编译的方式连接成一个字符串,尝试下面的定义,结果不是想要的"2.1.1",而是"VERSION_MAJOR,VERSION_MINOR,VERSION_REVISOR",有什么办法吗?
#define _VERSION_STR(a,b,c) #a##","## #b##","## #c
#define VERSION_STR _VERSION_STR(VERSION_MAJOR,VERSION_MINOR,VERSION_REVISOR)

注:错误在于预处理器遇到#就不再展开了,怎样才能避开呢?

windows 7 + VC++2008 + Qt4.5.2
离线sbtree
只看该作者 2楼 发表于: 2011-08-24
新问题,把上面定义的宏VERSION_STR放到vc的rc文件中,资源编译器展开成了 2","1","1,也就是说在逗号两边多了双引号,怎样才能去掉呢?头疼。。。
windows 7 + VC++2008 + Qt4.5.2
离线sbtree
只看该作者 1楼 发表于: 2011-08-24
试出了一个方法:
  1. #define VERSION_MAJOR 2
  2. #define VERSION_MINOR 1
  3. #define VERSION_REVISOR 1
  4. #define _STR(x) #x
  5. #define _VERSION_STR(a,b,c) _STR(a)##","##_STR(b)##","##_STR(c)
  6. #define VERSION_STR _VERSION_STR(VERSION_MAJOR,VERSION_MINOR,VERSION_REVISOR)


windows 7 + VC++2008 + Qt4.5.2
快速回复
限100 字节
 
上一个 下一个