`

C++预处理基础(4)

    博客分类:
  • c++
阅读更多

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;
  }

分享到:
评论

相关推荐

    C_C++ 语言参考 基本C_C++ 预处理命令

    本文将深入探讨"基本C/C++预处理命令",包括操作符优先级、转义字符、ASCII码表、基本数据类型以及关键字,并简要提及标准C库。 首先,预处理命令是C/C++程序编译过程中的第一步,它们不直接影响最终的机器代码,但...

    ISO-ANSI C标准译文与注解 C-C++预处理部分

    ### ISO-ANSI C标准译文与注解 C-C++预处理部分 #### ISO-ANSI C标准概览 ISO-ANSI C标准是国际标准化组织(ISO)和美国国家标准协会(ANSI)共同制定的一套C语言规范,旨在为C语言提供一个统一的标准框架,确保...

    C++基础教程_完整版 - 副本.pdf

    在C++基础教程中,首先介绍了C++程序的基本结构,包括程序的组织方式、预处理指令以及编译器如何处理源代码文件。基本结构的学习包括了C++程序的入口点main函数和程序的执行流程。 变量和数据类型是编程的基础,C++...

    语音信号预处理全过程c++编写

    以上是语音信号预处理的基础步骤,实际应用中可能还需要进行窗函数处理、加窗、梅尔频率倒谱系数(MFCC)提取等操作。在C++中,这些都可以通过标准库或第三方库如librosa来实现。在开发过程中,需要注意数据类型的选择...

    c++语言基础(吕凤翥第2版)

    第三章“预处理和语句”中,预处理指令是C++编程不可或缺的一部分,它包括宏定义、条件编译等,这些在大型项目中用于条件编译和代码管理。条件语句如if、else和switch语句,以及循环语句如for、while和do-while,是...

    C++基础教程 .ppt

    C++在C语言的基础上进行了大量的改进和扩充,增加了对面向对象编程的支持,使得它能够处理更复杂的软件开发任务。C++不仅仅是C语言的超集,同时也包含了面向对象编程的关键特性,如类、对象、继承、多态等。 C语言...

    《C++语言基础教程》吕凤翥习题答案(天津理工大学).

    "C++语言基础教程吕凤翥习题答案" 本资源是《C++语言基础教程》吕凤翥习题答案,...* C++中的编译过程包括预处理、编译和链接三个阶段。 * C++中的编译过程可能会出现错误信息,但在链接过程中将不会出现错误信息。

    一套C++基础讲义(PPT)

    此外,C++还有预处理指令(如#include、#define)、类和对象、模板、异常处理、STL(标准模板库)等高级特性,这些在后续的学习中会逐渐接触到。对于初学者,建议先从基础入手,逐步深入,掌握好基础后再去挑战更...

    c++语言基础教程课后答案_吕凤翥编

    ### C++语言基础教程课后答案相关知识点解析 #### 一、选择填空解析 1. **面向对象的程序设计语言** - **答案:** C++ - **解析:** C++是一种支持面向对象编程的语言,它扩展了C语言的功能,引入了类、对象等面向...

    C++语言基础教程课后答案

    4. 封装:C++通过封装隐藏对象的内部实现细节,只对外提供公共接口。这样可以防止外部代码随意修改对象的状态,提高了软件的稳定性。 5. 多态:多态允许不同的对象对同一消息做出不同的响应,提供了更灵活的编程...

    C++基础入门.md.pdf

    C++是一种静态类型、编译式、通用的编程语言,由Bjarne Stroustrup在1979年开始开发,最初被称为C with Classes,...以上内容为C++程序开发的基础知识。掌握这些知识点对于编写C++程序和进一步学习该语言是非常重要的。

    C++ 函数与预处理

    【函数与预处理】是C++编程中的重要概念,它们是构建复杂程序结构的基础。在C++中,函数是一组完成特定任务的代码块,可以被多次调用,从而实现代码复用。预处理则是编译过程的早期阶段,涉及宏定义、条件编译等操作...

    C++吕凤翥第3版课后选择题答案加解析.doc

    12. 在C++编译过程中,包含预处理过程、编译过程和连接过程,并且这三个过程的顺序是不能改变的。 本资源涵盖了C++语言的基础知识,包括面向对象的概念、类和对象的关系、C++语言的特点等,对于学习C++语言的初学者...

    C++基础教程-完整版Juan Soulie.pdf

    第五章介绍了C++的高级概念,包括模板、命名空间、异常处理、类型转换和预处理指令等。 C++标准函数库 第六章讲述了C++标准函数库,包括文件输入/输出、字符串处理、容器类、算法等。 学习建议 为了更好地学习...

    C++基础教程

    6. **C++高级概念**:深入到C++的高级主题,如模板(泛型编程)、命名空间、异常处理、高级类型的类型转换和预处理指令。同时,还介绍了C++标准库,特别是文件的输入输出。 在学习过程中,遇到的每个新概念都通过...

    C++学习基础,简单易懂

    总的来说,C++学习基础涵盖了变量、函数、指针、控制流、输入输出、预处理指令、异常处理等多个方面。对于初学者来说,需要耐心地练习和理解每个概念,逐步建立起坚实的编程基础,才能在C++的世界中游刃有余。

    C++语言基础ppt课件.ppt

    VC上机过程是C++语言的编译和执行过程,包括预处理、编译、汇编、链接等步骤。VC上机过程能够将C++语言的源代码转换为可执行文件,实现了C++语言的编译和执行。 C++语言的字符集 -------------- C++语言的字符集...

    基于Opencv图像预处理的工件变形量测量C++源码+sln解决方案.zip

    【4】如果基础还行,或热爱钻研,可基于此项目进行二次开发,DIY其他不同功能,欢迎交流学习。 【备注】 项目下载解压后,项目名字和项目路径不要用中文,否则可能会出现解析不了的错误,建议解压重命名为英文名字...

Global site tag (gtag.js) - Google Analytics