c预处理器字符串连接
发布时间:2020-12-16 07:33:39 所属栏目:百科 来源:网络整理
导读:如何组合预定义的C值以生成字符串. #define APP_NUMBER 22#define ICON_FILE "../icons/"##APP_NUMBER##".ico" 所以在我的.rc文件中我可以执行以下操作 1000 ICON ICON_FILE 代替 ?????1000 ICON“../icons/22.ico” it didnt work #define MY_ICON_FILE 25
如何组合预定义的C值以生成字符串.
#define APP_NUMBER 22 #define ICON_FILE "../icons/"##APP_NUMBER##".ico" 所以在我的.rc文件中我可以执行以下操作 1000 ICON ICON_FILE 代替
解决方法
这有效:
#define APP_NUMBER 22 #define STR(x) #x #define ICON_FILE_NAME(num) "../icons/" STR(num) ".ico" #define ICON_FILE ICON_FILE_NAME(APP_NUMBER) #include <stdio.h> int main(void) { printf("ICON_FILE = "%s"n",ICON_FILE); return 0; } 输出是: ICON_FILE = "../icons/22.ico" 但ICON_FILE宏扩展为“../icons/”“22”“.ico”,这是C的有效语法(相邻的字符串文字被连接),但可能不适用于.rc文件,这解释了“可以” t打开图标文件“你收到的消息. 看起来您正在尝试使用令牌粘贴来生成字符串文字.问题在于,包含不匹配的“字符的部分字符串文字不能是有效的预处理标记.例如,您不能将单个”作为参数传递给宏. 考虑编写一个程序(脚本,无论如何),为您生成适当的#define指令. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |