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

相关推荐
C++ 老炮儿的技术栈3 小时前
MFC 自定义纯色居中文字进度条控件
c语言·数据库·c++·windows·算法·c·visual studio
Drone_xjw14 小时前
从 GDB 到 CDB:C/C++ 程序调试的两把“手术刀”
c语言·开发语言·c++
gugucoding20 小时前
25. 【C语言】二进制文件与随机读写
c语言·开发语言
十月的皮皮21 小时前
C语言学习笔记20260706-栈的压入、弹出序列验证
c语言·笔记·学习
wuminyu1 天前
Java NIO内存管理与零拷贝深度剖析
java·linux·c语言·jvm·c++
gugucoding1 天前
33. 【C语言】调试技巧与工具
c语言·开发语言
Darkwanderor1 天前
Linux进程优先级操作
linux·运维·c语言·c++
智者知已应修善业1 天前
【P12159蓝桥杯数组翻转】2025-4-24
c语言·c++·经验分享·笔记·算法·蓝桥杯
SuperByteMaster1 天前
keil link misc controls
c语言
码农幻想梦1 天前
解决“ C 盘临时文件显示占用 200GB,但点进去却看不到具体文件”的问题
c语言·开发语言