`
anlx27
  • 浏览: 496653 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

从#if -#else- #endif 接触预编译

阅读更多
看代码时看到这么一段,
看着眼熟,可还是不太懂于是研究了一下,原来加了“#”的都是预编译的。由于看的是C代码,这里说说 C 的预编译,我也是现学现卖,还望各位朋友指正~QQ 458473928

在 C 语言中,并没有任何内在的机制来完成:
a  在编译时包含其他源文件,定义宏,
b  根据条件决定编译时是否包含某些代码.


这些工作,就需要使用预处理程序.

预处理--在编译之前,就对他们进行了处理

读入源代码,检查包含预处理指令的语句和宏定义,并对源代码进行响应的转换.预处理过程还会删除程 序中的注释和多余的空白字符. 预处理指令是以#号开头的代码行(#号必须是该行除了任何空白字符外的第一个字符).



#include   包含一个源代码文件
#define    定义宏
#undef     取消已定义的宏
#if        如果给定条件为真,则编译下面代码 , 给定条件不为真,当前条件为真,则编译下面代码

#ifdef     如果宏已经定义,则编译下面代码
#ifndef    如果宏没有定义,则编译下面代码
#elif      如果前面的
#endif     结束一个#if


举个例子(本例子摘抄的)
#include <stdio.h> //告诉编译器,要参与编译的文件
#define r 16 //告诉编译器,r就是16
#if r==16 //告诉编译器,r==16的时候,编译下面这段,否则编译else部分的内容
void p(int a)
{
printf("%x",a);
}
#else //告诉编译器,#if的另外一个部分
void p(int a)
{
printf("%d",a);
}
#endif //告诉编译器,#if的结束

void main()
{
p(32);
}
  • 大小: 888 Bytes
分享到:
评论

相关推荐

    #ifdef,#else,#endif,#if用法详解

    #ifdef、#else、#endif、#if 是 C++ 预处理命令中最为常用的四个命令,它们都是用来实现条件编译的。下面我们将详细地介绍它们的用法和实例分析。 #ifdef 命令 #ifdef 命令是用来判断一个宏是否已经被定义,如果宏...

    #ifdef,#else,#endif和#ifndef的用法

    "#ifdef,#else,#endif和#ifndef的用法" #ifdef、#else、#endif 和#ifndef 是 C/C++ 预处理命令中条件编译的四个基本指令,它们可以帮助开发者在编译前对代码进行选择性编译,从而实现代码的灵活使用和高效编译。 #...

    #if,#endif,!defined的意义和用法

    ### #if、#endif、!defined 的意义与用法详解 在编程中,预处理器指令是一种非常实用且强大的工具,特别是在 C 和 C++ 这样的编程语言中。本文将详细介绍 `#if`、`#endif` 以及 `!defined` 的含义与用法。 #### 一...

    预编译#define_#ifdef_#endif用法

    `#define`, `#ifdef`, `#endif`等预编译指令帮助程序员根据特定条件来决定哪些代码应该被编译,从而实现代码的灵活性和可配置性。 `#define`是宏定义指令,用于创建一个符号常量。例如,`#define DEBUG`将DEBUG定义...

    C语言预编译指令详解.docx

    1. #if, #elif, #else, #endif 指令 #if 指令可以用来设置不同的条件,在编译时编译不同的代码。例如: #if 条件 1 代码段 1 #elif 条件 2 代码段 2 ... #else 代码段 n+1 #endif 这些指令可以实现条件编译,...

    预编译资料- 预编译资料

    例如,`#if`、`#ifdef`、`#ifndef`、`#else`、`#endif`等指令用于控制代码块是否参与编译。这使得同一份源代码可以适应不同环境,增加代码的灵活性。 在使用宏定义时,有一些注意事项:首先,宏定义仅进行文本替换...

    什么是预编译

    3. #if、#else 和 #endif 指令:这些指令通常用于条件编译,例如: * #if defined(标识符) * 要执行的指令 * #else * 要执行的指令 * #endif 预编译头文件是指在编译过程中生成的中间文件,它包含了预编译后...

    C语言预处理命令之条件编译(_ifdef,_else,_endif,_if等)

    C语言预处理命令之条件编译(#ifdef、#else、#endif、#if等) C语言中没有内在的机制来完成一些功能,如在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预处理...

    c语言条件编译精讲

    从上至下依次检查每个`#if` 或 `#elif` 后的表达式,一旦遇到为真的表达式,就编译对应的程序段,并跳过剩余的条件检查。 ##### 3. `#ifdef` `#ifdef` 用于检测一个标识符是否已被定义,其结构如下: ```c #ifdef ...

    C_C++预编译

    ### C/C++ 预编译详解 #### 一、预编译概述 预编译是C/C++语言中的一项重要特性,它主要用于程序开发过程中的优化和代码管理。通过预编译,开发者可以在编译前对源代码进行一系列处理,如宏定义、条件编译等,以...

    预编译资料 预编译资料

    ### 预编译概述与应用 #### 一、预编译的概念 预编译是编程语言中的一个重要概念,尤其在C语言中占有极其重要的地位。预编译是指在源代码正式编译之前进行的一系列处理操作。这些操作主要包括宏定义、文件包含以及...

    预编译命令大全

    `#if`、`#else` 和 `#endif` 一起使用,用于基于条件编译不同的代码段。例如: ```c #if defined(DEBUG) printf("Debug mode.\n"); #else printf("Release mode.\n"); #endif ``` ##### 14.4.2 `#elif` 命令 `#...

    介绍c语言中条件编译相关的预编译指令

    C语言中条件编译相关的预编译指令 C语言中条件编译是根据实际定义宏(某类条件)进行代码静态编译的手段。可根据表达式的值或某个特定宏是否被定义来确定编译条件。下面将详细介绍条件编译中使用的预编译指令。 一...

    #ifndef、#def、#endif等宏的意思.pdf

    其中,#ifndef、#def、#endif等宏是C语言预处理命令中的重要组成部分,它们在条件编译中起着至关重要的作用。 #ifndef宏 #ifndef宏是C语言预处理命令中的一种,它的作用是:当标识符未被定义时,编译程序段1,否则...

    C++预编译指令用法

    例如,`#if` 或 `#ifdef` 后面的代码块需要以 `#else` 和 `#endif` 结束,以确保编译器知道何时结束条件检查。 总结来说,C++ 的预编译指令提供了灵活的代码控制方式,它们可以: 1. 取消宏定义:`#undef` 2. 根据...

    Laravel开发-string-blade-compiler

    #### - 条件语句:`@if`, `@elseif`, `@else`, `@endif` 这些指令可以用来执行条件逻辑,类似于PHP的`if...else`结构。 #### - 循环:`@for`, `@foreach`, `@while` 这些指令用于迭代数组或集合,与PHP的循环语句...

    C语言中条件编译详解

    1. 使用#if--#elif--#else--#endif语句实现 #if语句可以根据宏定义的值来选择性地编译代码。例如: ```c #if (_WIN32) printf("Windows下执行的代码\n"); #elif (__linux__) printf("Linux下执行的代码\n"); #else...

    keil 错误 C51编译器鉴别错类型

    - **ERROR112至ERROR114**: 预处理器条件指令(如elif、else、endif)使用不当或与if、ifdef、ifndef不匹配。 ### 总结 面对Keil C51编译器的各种错误,开发者需要仔细检查源代码,确保语法正确、预处理器指令合理...

    几个预编译指令的用法

    3. 条件编译(#if, #ifdef, #ifndef, #elif, #else, #endif) 这些指令允许代码根据宏定义的状态进行有条件地编译。例如: ```c #ifdef DEBUG printf("Debugging enabled\n"); #else printf("Debugging ...

Global site tag (gtag.js) - Google Analytics