Linux C:预处理命令
在编译程序时所做的一系列过程
eg: 执行 gcc -oapp main.c 时
预处理命令
一、宏定义
1.不带参数的宏定义
一般形式为:
#define 标识符 字符串
eg: #define PI 3.1415
#define N (3 + 4)
#define M (N * 3)
#define K (在程序中间进行定义) //说明在所定义行以后出现K
定义后面不加; //替换数值后会造成语法错误
宏名和变量不同,PI本质上是一常量,不能作为左值来使用 【不能进行 “ PI = 18;”操作】
为了区分宏名和所定义的普通变量,规定定义的宏名所有字母大写
只做预处理不编译: gcc -E -omain.i main.c
2.带参数的宏定义
一般形式为:
#define 宏名(参数表)宏的内容
eg:
#define ADD(a , b) ((a) +(b)) //带参宏的形参列表当中的每一个参数不需要指定数据类型
#define N(a , b , c) (ADD(a , b) + (c))
用法同不带参宏是简单的数值替换
二、“文件包含”处理
eg: #include <stdio.h> / #include "stdio.h"
两种表达方式:
1.绝对路径表达方式
2.相对路径表达方式
#include "/home/linux/1.txt"
#include <1.txt> //自动去 usr/include/
#include "1.txt" //当前所在文件的路径
三、条件编译
eg: #if 0 #endif
一般形式为:
(1)#ifdef 标识符
程序段 1
#else
程序段 2
#endif
eg:
#ifndef FUNC_H
#define FUNC_H....#endif
#if //满足条件代码加入编译
#elif //如果if不满足条件 elif满足加入编译
#else //if不满足代码加入编译
#endif //条件编译结束
#ifdef //定义了该宏,代码加入编译
#ifndef //没有定义该宏,代码加入编译
编译时 :gcc 文件名.c -D