C语言的预处理命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言的预处理命令相关的知识,希望对你有一定的参考价值。

1、宏替换命令

  编译器遇到宏替换命令所定义的标识符时,用其后的字符串替换该标识符。用这种方式定义符号常量。形式如下:

  #define  标识符 字符串 

    #define    TRUE     1    //用 TRUE 表示1

    #define     FALSE   0    //用 FALSE 表示0

  另一用法是作为代换。宏名可取参量数,每次遇到宏名时,与之相连的形式参数由程序中的实际参数代替:

    #define     MAX(a ,b)  ( a >= b ) ? a : b      

#define     MAX(a ,b)  ( a >= b ) ? a : b
int main( )
{
      int x = 190 ,  y = 106;
      printf("MAX :  %d" ,  MAX( x , y ) );       
}

 命令#undef 用作取消已定义的宏名替换:

    #undef  标识符

 将宏替换限定在一个代码块内。

#define    SUCCESS    1
    printf ( " %d" , SUCCESS );
#undef SUCCESS

2、终止编译命令

  为提高调试速度,加入终止编译命令 #error :

  #error MANUAL_STOP

   编译器编译到这条代码时就停止工作,并将字符串MANUAL_STOP作为错误提示,常与条件编译命令配合使用。

3、文件包含命令

  用于在编译时插入另一个源程序中的内容。被包含文件的名字必须用“ ”或者 < > 包围。

  #include "filename.h"

  #include <stdio.h>

4、条件编译命令

  1、#if 、#else 、#elif 及#endif 

#define X 190
#define Y 106
#if X <= Y                 //  如果条件成立,编译;否则编译 #else
    printf( " MIN : %d", X );
#else
    printf( " MIN : %d", Y );
#endif

  2、#ifdef 和ifndef

  #ifdef  用于判断某个宏名称是否已定义,如果已经定义则执行#ifdef 与#endif之间的代码。

  #ifndef 用于判断某个宏名称是否未定义,与前者相反。  

#ifdef    标识符
    代码块
#endif

#ifndef 标识符
    代码块
#endif

5、修改行号命令

6、编译指示命令

7、域定义的宏名

8、注释

 

以上是关于C语言的预处理命令的主要内容,如果未能解决你的问题,请参考以下文章

在C语言中 宏定义是啥?

C语言的宏定义问题

C语言的宏定义问题

单片机c语言宏定义有几种

C语言问题,宏定义中的参数为啥要定义,不是主函数中的参数直接替换吗?

C语言中的宏定义如何使用?