c/c++预处理指令总结

常见的预处理功能:

预处理器的主要作用就是把通过预处理的内建功能对一个资源进行等价替换,最常见的预处理有:文件包含,条件编译、布局控制和宏替换4种。

文件包含:#include 是一种最为常见的预处理,主要是做为文件的引用组合源程序正文。

条件编译:#if,#ifndef,#ifdef,#endif,#undef等也是比较常见的预处理,主要是进行编译时进行有选择的挑选,注释掉一些指定的代码,以达到版本控制、防止对文件重复包含的功能。

布局控制:#progma,这也是我们应用预处理的一个重要方面,主要功能是为编译程序提供非常规的控制流信息。

宏替换:#define,这是最常见的用法,它可以定义符号常量、函数功能、重新命名、字符串的拼接等各种功能。

下面我们看一下常见的预处理指令:

#define 宏定义

#undef 未定义宏

#include 文本包含

#ifdef 如果宏被定义就进行编译

#ifndef 如果宏未被定义就进行编译

#endif 结束编译块的控制

#if 表达式非零就对代码进行编译

#else 作为其他预处理的剩余选项进行编译

#elif 这是一种#else和#if的组合选项

#line 改变当前的行数和文件名称

#error 输出一个错误信息

#pragma 为编译程序提供非常规的控制流信息

时间: 2024-11-02 00:54:17

c/c++预处理指令总结的相关文章

VC预处理指令与宏定义

一个经典的例子 使用预处理与宏定义最经典的例子莫过于加在一个头文件中以避免头文件被两次编译.试想这种的情况,有一个文件headerfile.h 它被包含在headerfile1.h中,同时在headerfile2.h 中也被包含了,现在有一个CPP文件,implement.cpp 包含了headerfile1.h 和headerfile2.h: #include "headerfile1.h" #include "headerfile2.h" 假设headerfil

C#中的预处理指令

与C++不同,C#没有独立的预处理器.C#中的预处理指令(pre-processing directives)仅仅用来与C保持一致,而并不是编译器开始编译代码之前的一个单独的处理步骤,它是作为词法解析的一部分来执行的. 预处理指令都以#号开头并位于行首(前面可以出现空格符).在介绍条件编译之前,我们先学习两条用于定义符号和取消符号定义的预处理指令:#define和#undef. #define指令对于有一点C语言知识的读者来说再熟悉不过,它非常类似于C中的宏定义: #define COUNT 这

C#预处理指令之#line、#pragma warning

#line #line 使您可以修改编译器的行号以及(可选)错误和警告的文件名输出.下面的示例说明如何报告与行号关联的两个警告.#line 200 指令强迫行号为 200(尽管默认值为 #7).另一行 (#9) 作为默认 #line 指令的结果跟在通常序列后. class MainClass { static void Main() { #line 200 int i; // CS0168 on line 200 #line default char c; // CS0168 on line 9

预处理指令

C#预处理指令基本概念 虽然同C和C++的术语"预处理指令"名称一样,但C#的其实并没有单独的预处理步骤,也就是说在VS等环境中并没有预处理的编译器. 预处理指令能够用于替换源文件中的信息.以#(Sharp)字符和预处理指令名称开头.例如: #define MAX 习惯于将预处理指令的名称全部设为大写.和C与C++不同的是,C#中的预处理指令的名称后不加数字等.C\C++所支持的宏函数在C#中也是不支持的. 还可以使用#region来设置一个区域,同时也可以通过Visual Studi

C/C++预处理指令#pragma详解

      在所有的预处理指令中,#Pragma指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个编译器给出了一个方法,在保持与C和C ++语言完全兼容的情况下,给出主机或操作系统专有的特征.依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的.其格式一般为: #Pragma Para其中Para 为参数,下面来看一些常用的参数.      (1)message 参数. Message 参数是我最喜欢的一个参数,它能够在编

预处理指令中#Pragma

在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征.依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的. 其格式一般为: #pragma Para.其中Para 为参数,下面来看一些常用的参数 1.message 参数 Message 参数能够在编译信息输出窗口中输出相应的信息,这对于源代码信息

代码 c++-预处理指令错误的问题

问题描述 预处理指令错误的问题 #ifndef_Tree_h #define_Tree_h 为什么编译的时候出现预处理指令错误的提示?写错了吗?不对的话怎么改? 解决方案 dssdfdsfdsf 解决方案二: dsfsdfdsfdfds 解决方案三: dsfsdfdsfdfds 解决方案四: dsfsdfdsfdfds 解决方案五: dsfsdfdsfdfds 解决方案六: dsfsdfdsfdfds

代码-预编译连接符##  预处理指令

问题描述 预编译连接符## 预处理指令 #include <stdio.h> #include<stdlib.h> #define TR(m,n,p) m##n##p int main () { printf("%sn",TR("abc","xy","yz")); return 0; } 这段代码为什么编译不过? 解决方案 gcc?那好像要定义2个宏,可以看看这个解释http://www.cnblogs

常用C/C++预处理指令详解_C 语言

预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查.预处理命令以符号"#"开头. 常用的预处理指令包括: 宏定义:#define 文件包含:#include 条件编译:#if.#elif.#ifndef.#ifdef.#endif.#undef 错误信息指令:#error #line指令 布局控制:#pragma 宏定义 宏定义又称为宏代换.宏替换,简称"宏".宏替换只作替换,不做计算,不做表达式求解.宏定义分带参数的宏定义和不带参数的宏