c语言入门教程 第6讲 编译预处理命令

预处理指令

#include 引用各种函数库
#define 定义常用的宏

条件编译

根据表达式的结果来决定要编译的内容
#if
#else
#elif
#endif

// 根据变量或宏等是否定义来决定要编译的内容
#ifdef
#ifndef

#include

// 1)两种形式:
#include <stdio.h>  // 到配置目录中找
#include "stdio.h"  // 从当前目录开始找,无则到配置目录中找

// 2)文件包含允许嵌套
// 文件A包含了文件B,文件B又包含了文件C,最终文件B和C都会被引入A文件

#define

宏定义,用一个标示符来表示一个字符串,这个字符串可以使常量、变量或表达式。在宏调用中,将用该字符串替换宏名。

#include <stdio.h>
// 1) 无参数宏
#define PI 3.14
#define M (a+b+c)/2.0

main()
{
  int a = 1, b = 2, c = 3;
  printf("面积为%f", PI*2*2);
  printf("%f", M);
}
// 2)带参数宏
#define f(x) x*x+3*x
#define Sum(a,b,c) a=b*c;b=c*a;a=b*c

printf("%d", 3*f(2));

PS:非值传递,而是传递形参字符

条件编译

#if (常量表达式) =====> 注意常量,非变量
仅当表达式为真,则编译它与 #endif 之间的代码

#include<stdio.h>

#define debug = 0
#define beta = 1
#define status = 1

main()
{
#if (status == debug)
    printf("程序调试中n");
#elif (status == beta)
    printf("程序测试中n");
#else
    printf("欢迎使用正式版!n");
#endif
}

#ifdef 如果有定义 (if define)
#ifndef 如果没定义 (if not define)

#ifndef PI
    define PI 3.14
#endif

#ifdef 和 #ifndef 主要是用来避免重定义

c语言入门教程 第7讲 数组

额外内容:
使用CL.exe编译c程序

Advertisements

10 thoughts on “c语言入门教程 第6讲 编译预处理命令

  1. 我在运行条件编译下面的实例的时候 #if (status == debug)这一句出现invalid integer constant expression错误咋办啊

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google+ photo

You are commenting using your Google+ account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s