宏定义中参数使⽤
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, ) \
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) \
2if (shmid != -1) { \
3if (shmctl(shmid, IPC_RMID, NULL) == -1) { \
4            printf("remove %s failed!\n", #shmid); \c语言中的sprintf用法
5        } \
6    }
7
8int main (void)
9 {
10int myshm = 123;
11
12    REMOVE_SHMEM(myshm);
13 }
输出:
remove myshm failed!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。