首页 > 其他 > 详细

宏定义中参数使用

时间:2019-07-06 13:34:16      阅读:144      评论:0      收藏:0      [点我收藏+]

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!

 

宏定义中参数使用

原文:https://www.cnblogs.com/luoyingcai/p/11142244.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!