C++预处理基础(4)

5)标准的预处理器宏
  __LINE__ 当前源文件中的代码行号,十进制整数
  __FILE__ 源文件的名称,字符串字面量
  __DATE__ 源文件的处理日期,字符串字面量,格式mmm dd yyyy其中mmm是月份如Jan、Feb等 dd是01-31 yyyy是四位的年份
  __TIME__ 源文件的编译 时间,也是字符串字面量格式是hh:mm:ss
  __STDC__ 这取决于实现方式,如果编译器选项设置为编译标准的C代码,通常就定义它,否则就不定义它
  __cplusplus 在编译C++ 程序时,它就定义为199711L
  使用#line可以修改__FILE__返回的字符串
  如
  #line 1000 把当前行号设置为1000
  #line 1000 "the program file" 修改__FILE__返回的字符串行号改为了1000,文件名改为了"the program file"
  #line __LINE__ "the program file" 修改__FILE__返回的字符串行号没变,文件名改为了"the program file"
  cout << "program last complied at "<<__TIME__
  << " on " << __DATE__
  << endl;
  6)#error
  在预处理阶段,如果出现了错误,则#error指令可以生成一个诊断 消息,并显示为一个编译错误,同时中止编译
  #ifndef __cplusplus
  #error "Error - Should be C++"
  #endif
  7)#pragma
  专门用于实现预先定义好的选项,其结果在编译器说明文档中进行了详细的解释。编译器未识别出来的#pragma指令都会被忽略
  8)assert()宏
  在标准库头文件<cassert>中声明
  用于在 程序中 测试一个逻辑表达式,如果逻辑表达式为false, 则assert()会终止 程序,并显示诊断 消息
  用于在条件不满足就会出现重大错误,所以应确保后面的语句不应再继续执行,所以它的应用非常灵活
  注意: assert不是错误处理 机制,逻辑表达式的结果不应产生负面效果,也不应超出 程序员的控制(如找开一个文件是否成功), 程序应提供适当的代码来处理这种情况
  assert(expression);
  assert(expression) && assert(expression2);
  可以使用#define NDEBUG来关闭断言 机制
  #include <iostream>
  #include <cassert>
  using std::cout;
  using std::endl;
  int main()
  {
  int x=0;
  int y=0;
  cout<<endl;
  for(x=0; x<20; x++)
  {
  cout<<"x= "<<x <<" y= "<<y<<endl;
  assert(x<y); //当x>=y与x==5时,就报错,并终止 程序的执行
  }
  return 0;
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值