预处理语句--#define、#error和#warning

  1.#define语句

我们经常会这样定义一些宏:       #define BLOCK 8192

但这样的宏却不能在字符串中展开,如:    printf("The BLOCK number./n");

输出:          The BLOCK number.

 

想要把宏处理成字符串,可以使用#号,如:#define MONCK(ARGTERM)  printf("The term " #ARGTERM " is a string/n")

MONCK(A to B);
输出:

The term A to B is a string

可变参数的宏:可变参数可以用三个点(...)来表示,可以用__VA_ARGS__来展开,如:

#define err(...) fprintf(stderr,__VA_ARGS__)
err("%s %d/n","The error code: ",48);
一般,我们可以这样打印错误信息:

fprintf(stderr,"%s %d/n","The error code ",48);

但想要另外输出其它信息,我们可以这样定义一个可变参数的宏,例如:

#define errout(a,b,...)     fprintf(stderr,"File %s     Line %d/n",a,b);     fprintf(stderr,__VA_ARGS__)
那么我们就可以这样使用这个宏:

errout(__FILE__,__LINE__,"Unexpected termination/n");

因为__VA_ARGS__在fprintf中的内部实现使用了逗号来作分割符,所以必须要求至少有一个参数,如果想使__VA_ARGS__为空,可以这样使用:

fprintf(stderr, ##__VA_ARGS__);

 

2.#error

语法:  #error [用户自定义的错误消息]

当预处理器预处理到#error命令时将停止编译并输出用户自定义的错误消息。

注:上述语法成份中的方括号“[]”代表用户自定义的错误消息可以省略不写。

举例1:
#error Sorry,an error has occurred!
举例2:
#error
 

转载于:https://www.cnblogs.com/Caden-liu8888/p/5980349.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值