码迷,mamicode.com
首页 > 其他好文 > 详细

宏定义中参数使用

时间:2019-07-06 13:31:44      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:sprint   mat   aaa   height   bae   failed   and   exe   width   

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!

 

宏定义中参数使用

标签:sprint   mat   aaa   height   bae   failed   and   exe   width   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!