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

相关推荐
BlackQid3 小时前
深入理解指针Part5——回调函数及应用
c语言
日拱一卒——功不唐捐4 小时前
字符串匹配:暴力法和KMP算法(C语言)
c语言·算法
lcj25114 小时前
深入理解指针(4):qsort 函数 & 通过冒泡排序实现
c语言·数据结构·算法
4311媒体网5 小时前
C语言操作符全解析 C语言操作符详解
java·c语言·jvm
二年级程序员5 小时前
一篇文章掌握“顺序表”
c语言·数据结构
傻乐u兔6 小时前
C语言进阶————指针4
c语言·开发语言
历程里程碑6 小时前
Linux22 文件系统
linux·运维·c语言·开发语言·数据结构·c++·算法
2601_9491465313 小时前
C语言语音通知接口接入教程:如何使用C语言直接调用语音预警API
c语言·开发语言
知南x15 小时前
【Ascend C系列课程(高级)】(1) 算子调试+调优
c语言·开发语言
2的n次方_17 小时前
Runtime 执行提交机制:NPU 硬件队列的管理与任务原子化下发
c语言·开发语言