宏定义中参数使用
Posted luoyingcai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了宏定义中参数使用相关的知识,希望对你有一定的参考价值。
1. 宏传递变长参数:
最近用C语言写一个程序,经常调用shell或者其他命令,代码中多处出现如下代码:
char script_cmd[CMD_MAX_LEN + 1] = ‘\0‘; memset(script_cmd, 0, sizeof(script_cmd)); sprintf(script_cmd, "cmd %s %s", param1, param2); system(script_cmd);
每调用一次就是三行代码,看着也十分不爽。偶然间学会通过宏传递参数,代码瞬间简化很多:
#define EXECUTE_SCRIPT(script_cmd_array, format,args...) \ memset(script_cmd_array, 0, sizeof(script_cmd_array)); sprintf(script_cmd_array, format, ##args); system(script_cmd_array); char script_cmd[CMD_MAX_LEN + 1] = ‘\0‘; EXECUTE_SCRIPT(script_cmd, "cmd %s %s", param1, param2);
2. 宏中参数当做字符串使用
1 #define REMOVE_SHMEM(shmid) 2 if (shmid != -1) 3 if (shmctl(shmid, IPC_RMID, NULL) == -1) 4 printf("remove %s failed!\n", #shmid); 5 6 7 8 int main (void) 9 10 int myshm = 123; 11 12 REMOVE_SHMEM(myshm); 13
输出:
remove myshm failed!
以上是关于宏定义中参数使用的主要内容,如果未能解决你的问题,请参考以下文章
c/c++宏函数的定义与使用(宏定义函数)(macro definition)