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

相关推荐
阿巴~阿巴~25 分钟前
冒泡排序算法
c语言·开发语言·算法·排序算法
前路不黑暗@4 小时前
C语言:操作符详解(二)
c语言·开发语言·经验分享·笔记·学习·学习方法·visual studio
西工程小巴6 小时前
实践笔记-VSCode与IDE同步问题解决指南;程序总是进入中断服务程序。
c语言·算法·嵌入式
Nuyoah11klay7 小时前
华清远见25072班C语言学习day11
c语言·指针·回调函数
Despacito0o9 小时前
C语言基础:变量与进制详解
java·c语言·开发语言
科大饭桶10 小时前
C++入门自学Day11-- String, Vector, List 复习
c语言·开发语言·数据结构·c++·容器
Felven10 小时前
C. Game of Mathletes
c语言·开发语言
Cx330❀12 小时前
【数据结构初阶】--排序(四):归并排序
c语言·开发语言·数据结构·算法·排序算法
意疏12 小时前
【C语言篇】srand函数的详细用法解析
c语言·开发语言
艾莉丝努力练剑13 小时前
【C语言16天强化训练】从基础入门到进阶:Day 1
c语言·开发语言·数据结构·学习