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" //当前所在文件的路径
3.头文件中包含:
①构造数据类型的定义
②全局变量的声明
③全局函数的声明
④宏定义
4.工程结构

1)main.c中负责主函数编写
2)功能代码.c中主要负责功能函数的编写
3)功能代码.h中主要负责声明功能代码.c中编写的功能函数
4)调用函数的文件只需加对应函数的.h头文件即可使用该函数

三、条件编译

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

相关推荐
rolla27 分钟前
01.初始C语言
c语言
屁股割了还要学2 小时前
【C语言进阶】一篇文章教会你文件的读写
c语言·开发语言·数据结构·c++·学习·青少年编程
微露清风2 小时前
系统性学习C语言-第二十二讲-动态内存管理
c语言·开发语言·学习
钮钴禄·爱因斯晨2 小时前
C语言|指针的应用
c语言·开发语言
阿捏利3 小时前
C Primer Plus 第6版 编程练习——第10章(上)
c语言·c primer plus
wai歪why3 小时前
C语言:深入理解指针(5)
c语言·开发语言
爱和冰阔落5 小时前
【数据结构】长幼有序:树、二叉树、堆与TOP-K问题的层次解析(含源码)
c语言·数据结构·算法
ankleless6 小时前
C语言————原码 补码 反码 (试图讲清楚版)
c语言·开发语言
范纹杉想快点毕业17 小时前
基于C语言的Zynq SOC FPGA嵌入式裸机设计和开发教程
c语言·开发语言·数据库·嵌入式硬件·qt·fpga开发·嵌入式实时数据库
程序员编程指南18 小时前
Qt容器类:QList、QMap等的高效使用
c语言·开发语言·c++·qt