加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

宏定义中参数使用

发布时间:2020-12-15 21:11:10 所属栏目:安全 来源:网络整理
导读:1. 宏传递变长参数: 最近用C语言写一个程序,经常调用shell或者其他命令,代码中多处出现如下代码: char script_cmd[CMD_MAX_LEN + 1 ] = { ‘ ‘ };memset(script_cmd, 0 , sizeof (script_cmd));sprintf(script_cmd, " cmd %s %s " ,param1,param2);s

1. 宏传递变长参数:

最近用C语言写一个程序,经常调用shell或者其他命令,代码中多处出现如下代码:

char script_cmd[CMD_MAX_LEN + 1] = {};

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,sizeof(script_cmd_array));     sprintf(script_cmd_array,##args);     system(script_cmd_array);
    
char script_cmd[CMD_MAX_LEN + 1] = {};
EXECUTE_SCRIPT(script_cmd,"cmd %s %s",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!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读