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++预处理命令",包括操作符优先级、转义字符、ASCII码表、基本数据类型以及关键字,并简要提及标准C库。 首先,预处理命令是C/C++程序编译过程中的第一步,它们不直接影响最终的机器代码,但...
### ISO-ANSI C标准译文与注解 C-C++预处理部分 #### ISO-ANSI C标准概览 ISO-ANSI C标准是国际标准化组织(ISO)和美国国家标准协会(ANSI)共同制定的一套C语言规范,旨在为C语言提供一个统一的标准框架,确保...
在C++基础教程中,首先介绍了C++程序的基本结构,包括程序的组织方式、预处理指令以及编译器如何处理源代码文件。基本结构的学习包括了C++程序的入口点main函数和程序的执行流程。 变量和数据类型是编程的基础,C++...
以上是语音信号预处理的基础步骤,实际应用中可能还需要进行窗函数处理、加窗、梅尔频率倒谱系数(MFCC)提取等操作。在C++中,这些都可以通过标准库或第三方库如librosa来实现。在开发过程中,需要注意数据类型的选择...
第三章“预处理和语句”中,预处理指令是C++编程不可或缺的一部分,它包括宏定义、条件编译等,这些在大型项目中用于条件编译和代码管理。条件语句如if、else和switch语句,以及循环语句如for、while和do-while,是...
C++在C语言的基础上进行了大量的改进和扩充,增加了对面向对象编程的支持,使得它能够处理更复杂的软件开发任务。C++不仅仅是C语言的超集,同时也包含了面向对象编程的关键特性,如类、对象、继承、多态等。 C语言...
"C++语言基础教程吕凤翥习题答案" 本资源是《C++语言基础教程》吕凤翥习题答案,...* C++中的编译过程包括预处理、编译和链接三个阶段。 * C++中的编译过程可能会出现错误信息,但在链接过程中将不会出现错误信息。
此外,C++还有预处理指令(如#include、#define)、类和对象、模板、异常处理、STL(标准模板库)等高级特性,这些在后续的学习中会逐渐接触到。对于初学者,建议先从基础入手,逐步深入,掌握好基础后再去挑战更...
### C++语言基础教程课后答案相关知识点解析 #### 一、选择填空解析 1. **面向对象的程序设计语言** - **答案:** C++ - **解析:** C++是一种支持面向对象编程的语言,它扩展了C语言的功能,引入了类、对象等面向...
4. 封装:C++通过封装隐藏对象的内部实现细节,只对外提供公共接口。这样可以防止外部代码随意修改对象的状态,提高了软件的稳定性。 5. 多态:多态允许不同的对象对同一消息做出不同的响应,提供了更灵活的编程...
C++是一种静态类型、编译式、通用的编程语言,由Bjarne Stroustrup在1979年开始开发,最初被称为C with Classes,...以上内容为C++程序开发的基础知识。掌握这些知识点对于编写C++程序和进一步学习该语言是非常重要的。
【函数与预处理】是C++编程中的重要概念,它们是构建复杂程序结构的基础。在C++中,函数是一组完成特定任务的代码块,可以被多次调用,从而实现代码复用。预处理则是编译过程的早期阶段,涉及宏定义、条件编译等操作...
12. 在C++编译过程中,包含预处理过程、编译过程和连接过程,并且这三个过程的顺序是不能改变的。 本资源涵盖了C++语言的基础知识,包括面向对象的概念、类和对象的关系、C++语言的特点等,对于学习C++语言的初学者...
第五章介绍了C++的高级概念,包括模板、命名空间、异常处理、类型转换和预处理指令等。 C++标准函数库 第六章讲述了C++标准函数库,包括文件输入/输出、字符串处理、容器类、算法等。 学习建议 为了更好地学习...
6. **C++高级概念**:深入到C++的高级主题,如模板(泛型编程)、命名空间、异常处理、高级类型的类型转换和预处理指令。同时,还介绍了C++标准库,特别是文件的输入输出。 在学习过程中,遇到的每个新概念都通过...
总的来说,C++学习基础涵盖了变量、函数、指针、控制流、输入输出、预处理指令、异常处理等多个方面。对于初学者来说,需要耐心地练习和理解每个概念,逐步建立起坚实的编程基础,才能在C++的世界中游刃有余。
VC上机过程是C++语言的编译和执行过程,包括预处理、编译、汇编、链接等步骤。VC上机过程能够将C++语言的源代码转换为可执行文件,实现了C++语言的编译和执行。 C++语言的字符集 -------------- C++语言的字符集...
【4】如果基础还行,或热爱钻研,可基于此项目进行二次开发,DIY其他不同功能,欢迎交流学习。 【备注】 项目下载解压后,项目名字和项目路径不要用中文,否则可能会出现解析不了的错误,建议解压重命名为英文名字...