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

相关推荐
Navigator_Z8 小时前
LeetCode //MySQL - 1251. Average Selling Price
c语言·算法·leetcode
Escalating_xu9 小时前
【C语言数据类型和变量·上】从内置类型到变量模型:一次讲透 sizeof、signed/unsigned 与作用域
c语言
aramae10 小时前
模拟实现strlen()函数 (C语言)
c语言·开发语言·后端
多弗朗皮卡丘13 小时前
数据结构9:排序算法
c语言·数据结构·排序算法
老当益壮梁奶奶16 小时前
ARM 汇编学习笔记(二)启动代码、指令、函数调用与 C 混合编程
c语言·arm开发·单片机·嵌入式硬件·51单片机
wuminyu18 小时前
Markword在紧凑对象头上的实现原理剖析
java·linux·c语言·jvm·c++
潘潘的嵌入式日记18 小时前
位操作怎么写才不出错?置位、清位、翻转、取位一次讲清
c语言·嵌入式·寄存器·位操作
无忧.芙桃18 小时前
数据结构之排序算法(上):从评价指标到插入、希尔、选择与堆排序
c语言·c++·排序算法
SuperByteMaster19 小时前
configUSE_TIME_SLICING和configUSE_PREEMPTION
c语言
周杰偷奶茶19 小时前
【C 语言】分支、循环和 goto 语句(附实战)
c语言