IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言笔记-4-预处理宏的使用 -> 正文阅读

[C++知识库]C语言笔记-4-预处理宏的使用

C语言笔记-4-预处理宏的使用



前言

自学笔记,没有历史知识铺垫(省略百度部分),C语言预处理宏的使用,前文gcc中可以了解到,宏会在预处理时,被替换到了实际代码中,编译的代码已经没有宏相关的代码了


一、预处理

1.#include 包含文件

// 系统库规范,一般使用<>引入
#include <stdio.h>
// 三方库规范,一般使用""引入,便于区分
#include "product.h"

2.#define

// 宏会在预处理时将内容替换到代码中,此时不会对内容进行语法检查
#define PRODUCT_ID 12

// 如此处,预处理时会将1+1替换到代码中,如果有乘除运算,则程序可能不会达到预期效果如:1+1*5导致实际结果为6
#define UNIT 1+1
// 宏体可以使用()包裹,减少替换到代码时可能产生的问题,如:(1+1)*5,结果为10
#define UNIT (1+1)

//宏函数
#define UNIT(x) (2*(x))
//结果为22,而非12,通过(),达到预期设计的效果
...printf("UNIT(x): %d\n",UNIT(1+10));

3.#ifdef #else #endif 宏条件语句

可用于不同环境调试/切换防止重复引入时使用
一般被判断的宏可以在gcc 中使用-D来注入,如gcc -DTEST_ENV
这样就不需要代码二次开发即可调试

//判断宏是否存在
#ifdef TEST_ENV
	printf("show debug content");
#endif

4.预定义宏__FUNCTION__ :函数名

// 打印当前方法名
prinf("this function name is : %s",__FUNCTION__);

5.预定义宏__LINE__ :行号

// 打印当前行号
prinf("this line is : %d",__LINE__);

6.预定义宏__FILE__ :文件名

// 打印当前文件名 xx.c
prinf("this file is : %s",__FILE__);

二、宏体中的#与##

// 一个# 表示将内容字符串化
#define USER_TAG(tag) #tag
// 两个## 表示连接标识.将前后连接起来,如变量,函数的动态引用
#define USER_GROUP(num) user_group_##num

int main(){
	int user_group_1=10;
	int user_group_2=20;
	//输出结果为user group is 10
	printf("user group is %d \n",USER_GROUP(1));
	
	//输出结果为user group is 20
	printf("user group is %d \n",USER_GROUP(2));

	return 0;
}


总结

本章主要为C语言预处理宏的使用

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-23 16:27:24  更:2021-08-23 16:29:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 4:47:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计