哪些网站可以做淘宝店招,做视频上传可以赚钱的网站,学校网站模板大全,淘宝网现状 网站建设宏
_LINE_ 表示正在编译的文件的行号_FILE_ 表示正在编译的文件的名字_DATE_ 表示编译时刻的日期字符串#xff0c;例如: 25 Dec 2007_TIME_ 表示编译时刻的时间字符串#xff0c;例如: 12:30:55_STDC_ 判断该文件是不是定义成标准 C 程序宏名的书写… 宏
_LINE_ 表示正在编译的文件的行号_FILE_ 表示正在编译的文件的名字_DATE_ 表示编译时刻的日期字符串例如: 25 Dec 2007_TIME_ 表示编译时刻的时间字符串例如: 12:30:55_STDC_ 判断该文件是不是定义成标准 C 程序宏名的书写由标识符与两边各二条下划线构成#define PI 3.141592654const 修饰的不是常量而是 readonly 的变量const 修饰的只读变量不能用来作为定义数组的维数 也不能放在 case 关键字后面。#define ENG_PATH_4 E:\\English\\listen_to_this\\listen_to_this_3 路径使用双 反斜杠 单\ 表示连接符宏的生命周期从#define 开始到#undef 结束
条件编译
条件编译的功能使得我们可以按不同的条件去编译不同的程序部分因而产生不同的目标代码文件。这对于程序的移植和调试是很有用的。条件编译有三种形式文件包含
文件包含是将多个源文件链接形成一个源文件进行编译形成一个目标文件#include 预处理到 系统规定的路径中去获得这个文件(即 C 编译系统所提供的并存放在指定的子目录下的头 文件)。找到文件后用文件内容替换该语句filename 为要包含的文件名称。双引号表示预处理应在当前目录中查找文件名为 filename 的文件若没有找到则按系统指定的路径信息搜索其他目录。找到文件后用 文件内容替换该语句。需要强调的一点是:#include 是将已存在文件的内容嵌入到当前文件中。 另外关于#include 的路径也有点要说明:include 支持相对路径格式如 trackant(蚁迹寻 踪)所写: .代表当前目录..代表上层目录。
#error预处理
#error 预处理指令的作用是编译程序时只要遇到 #error 就会生成一个编译错误提 示消息并停止编译。其语法格式为: #error error-message注意宏串 error-message 不用双引号包围。遇到#error 指令时错误信息被显示可能同时 还显示编译程序作者预先定义的其他内容。关于系统所支持的 error-message 信息请查找 相关资料
#line处理
#line 的作用是改变当前行数和文件名称它们是在编译程序中预先定义的标识符 命令的基本形式如下:#line number[filename] 其中[]内的文件名可以省略 #line 30 a.h 其中文件名 a.h 可以省略不写。这条指令可以改变当前的行号和文件名例如上面的这条预处理指令就可以改变当前的行号 为 30文件名是 a.h。初看起来似乎没有什么用不过他还是有点用的那就是用在编译 器的编写中我们知道编译器对 C 源码编译过程中会产生一些中间文件通过这条指令 可以保证文件名是固定的不会被这些中间文件代替有利于进行分析。
#pragma
#pragma 指令可能是最复杂的了它的作用是设定编译器的 状态或者是指示编译器完成一些特定的动作。#pragma 指令对每个编译器给出了一个方法, 在保持与 C 和 C 语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译 指示是机器或操作系统专有的,且对于每个编译器都是不同的。其格式一般为: #pragma para 其中 para 为参数下面来看一些常用的参数。
#pragma message
message 参数:Message 参数是我最喜欢的一个参数它能够在编译信息输出窗口中输出相应的信息这对于源代码信息的控制是非常重要的。其使用方法为: #pragma message(“消息文本”)当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。 当我们在程序中定义了许多宏来控制源代码版本的时候我们自己有可能都会忘记有没有 正确的设置这些宏此时我们可以用这条指令在编译的时候就进行检查。假设我们希望判 断自己有没有在源代码的什么地方定义了_X86 这个宏可以用下面的方法 内存对齐 利用#pragma pack()来改变编译器的默认对齐方式使用指令#pragma pack (n)编译器将按照 n 个字节对齐。使用指令#pragma pack ()编译器将取消自定义字节对齐方式。 在#pragma pack (n)和#pragma pack ()之间的代码按 n 个字节对齐。但是成员对齐有一个重要的条件,即每个成员按自己的方式对齐.也就是说虽然指定了 按 n 字节对齐,但并不是所有的成员都是以 n 字节对齐。其对齐的规则是,每个成员按其类型 的对齐参数(通常是这个类型的大小)和指定对齐参数(这里是 n 字节)中较小的一个对齐即: min( n, sizeof( item )) 。并且结构的长度必须为所用过的所有对齐参数的整数倍,不够就补空 字节。注意事项 # 在字符串中包含宏参数那我们就可以使用“#”它可以把语言符号转 化为字符串##运算符
和#运算符一样##运算符可以用于宏函数的替换部分。这个运算符把两个语言符号组合成单个语言符号