c语言中 d的用法,C语言中的#define用法总结
1、宏定义
格式:
#define 标识符(也称为宏名) 替换列表
例如;
#define PI 3.14
以上代码就是定义了一个宏。 宏的名称为PI, 我们在使用的时候,会在编译预处理时,将代码中的PI替换为3.14
注意: 没有 分号
printf("pi = %f \n", PI);
//结果为 pi = 3.14
其实,就是进行了简单的替换而已。那么我们可以利用这个特性,进行代码混淆。
2、可以进行代码混淆
#include
#include
#include
#define _int
#define __ main
#define ___ (
#define ____ )
#define _____ {
#define ______ }
#define _______ printf("Hello C\n");
#define _________ return 0;
#define ___________ system("pause");
_ __ ___ ____
_____
_______
___________
_________
______
运行效果为:
3、带参数的宏
格式:
#define 标识符(参数列表) 替换列表
例如:
#define MAX(a,b) ((a)>(b)?(a):(b))
int nNum = MAX(3,4); // 会替换为 int nNum = ((3)>(4) ? (3) : (4) )
注意:每个参数都要单独的加上小括号(),否则会出现一些问题
4、当宏定义一个很长的字符串的时候
#define STRTING "andfdsafdsafdsafdsafdsafdsfdsafdasfdsafdafdsafdsafasdfffffffffffffffffffffffffffffffffffffffffffffffffff"
如果我们这么去定义,未尝不可,但是要是1w个字符呢?这样定义就有待商榷了,加上从风格来说也不是很好。
那遇到该问题我们如何解决------------------使用 \ 即可, 在每一个换行的时候加上一个 \
#define STRTING "andfdsafdsafdsafdsafdsafdsfdsafdasfdsaf"\
"dafdsafdsafasdfffffffffffffffffffffffff"\
"ffffffffffffffffffffffffff"
5、取消宏
格式:
#undef 宏名
//会自动添加上双引号
#define mprint(m) printf("%s = %d \n", #m, m)
int main()
{
int nNumA = 12;
#undef mprint(m) //取消宏定义 此行一下 都不能再使用 mprint(m) 宏
//mprint(nNumA); //此时 会报错
system("pause");
return 0;
}
6、宏定义中 # 的作用,会将使用的参数自动添加上 双引号。
int nNumA = 12;
我们想输出的效果为 nNumA = 12;
如果直接使用
printf("%s = %d \n", nNumA, nNumA);
这样是实现不了我们想要的效果的,接下来 我们使用 宏定义
#include
#include
#include
//会自动添加上双引号
#define mprint(m) printf("%s = %d \n", #m, m)
int main()
{
int nNumA = 12;
//我们想输出的效果为 nNumA = 12;
//printf("%s = %d \n", nNumA, nNumA); //这样是实现不了我们想要的效果的
mprint(nNumA);
system("pause");
return 0;
}
效果图
7、系统预定义的宏
在C语言中收录了一些有用的宏,这些宏是提供当前编译信息的。
__LINE__ 被编译文件的行数(整型)
__FILE__ 被编译文件的名字 (字符型)
__DATE__ 编译日期 (字符型)
__TIME__ 编译时间 (字符型)
__STDC__ 如果编译器接受标准C,那么值为1. (整型)
8、条件编译
有三种情况
如果标识符被定义过 #ifdef
#ifdef 标识符
/*程序段1*/
#else
/*程序段2*/
#endif
如果标识符未被定义过 #ifndef----里面有个n
#ifndef 标识符
/*程序段1*/
#else
/*程序段2*/
#endif
根据表达式判定
#if 表达式
/*程序段1*/
#else
/*程序段2*/
#endif
c语言中 d的用法,C语言中的#define用法总结相关推荐
- c语言中time函数作用,C语言中时间的基本用法小结
前言 在我学的这些编程语言中,总是记不住它们的时间处理方式,每次用到时都要重新看,所以想着在这里记录下来,也方便用到时查找,也方便有需要的朋友们参考. time_t和struct tm 在C语言中用t ...
- c语言中fopen的作用,c语言fopen函数的用法
在c语言中可以使用"fopen()"函数打开一个文件,该函数用于打开一个文件,其语法是"open("file a","r");&q ...
- ab 是什么意思C语言中,a/b在c语言中什么意思,c语言中ab是什么意思
Q1:c语言中y=(x=a+b,b+c)代表什么意思 x=a+b表达式使得x=6,其返回值为X(x,b+c)是逗号表达式,逗号表达式的值为最后一个子表达式的值所以 y=b+c y=10 Q2:C语言中 ...
- c语言中0x11是多少,C语言中的符号
C语言中的符号 运算符的种类C语言的运算符可分为以下几类: 1.算术运算符 用于各类数值运算.包括加(+).减(-).乘(*).除(/).求余(或称模运算,%).自增(++).自减(–)共七种. 2. ...
- c语言中fopen_s函数,关于C语言中从文件读取数据时,fopen,fopen_s和fscanf,fscanf_s的函数用法(函数的用法有很大区别)...
首先这都是针对由于VS软件的设置,一些函数的需要在函数名后面加"_s"才能使用. (或者最直接的方法程序开头加#pragma warning(disable:4996) 就什么问题 ...
- c语言中 include math.h,C语言中的(#includestdio.h和#includemath.h)是什么意思?
慕码人2483693 include 称为文件包含命令,其作用是把尖括号""或引号<>内指定的文件包含到本程序中,成为本程序的一部分,被包含的文件通常是由系统提供的,其 ...
- 素数在c语言表达能力,巧用C语言中的Continue语句解决数论中的问题
.#0 福建电脑!""#年第$%期 巧用!语言中的!"#$%&'(语句解决数论中的问题 杨爱梅 !河南工业大学河南郑州"#$$#%& !摘要!运 ...
- c语言中 1ul什么意思,c语言 #define 中的UL
c语言 #define 中的UL U和L是 整数文字量的后缀修饰,用于显示指明整数文字量的类型为unsigned int(U)和long int(L). 类似的还有浮点数文字量的后缀修饰F或f,用于指 ...
- 在c语言中char型数据在内存中的储存形式为什么
在c语言中char型数据在内存中的储存形式为"ASCII码".在C语言中,将一个字符常量放到一个字符变量中,实际并不是把该字符本身放到内存单元中,而是将与该字符相对应的ASCII码 ...
最新文章
- 【数学专题】莫比乌斯反演与积性函数
- 思科——单臂路由与DHCP的结合
- python使用符号 表示单行注释-Python注释符号(多行注释和单行注释)用法详解...
- Windows驱动开发 - 设备对象初步学习
- cmd写java程序_用cmd写一个最简单的Java程序
- 在本地如何搭建虚拟主机(Appserver集成环境)
- 最近遇到的jsfl开发问题总结
- 滚动条颜色样式设置 说明
- LINUX下载编译libpng
- cic滤波器原理 MATLAB,cic滤波器(cic滤波器的原理和设计)
- blender 快捷键
- 感性电路电流计算_三相电的电功率的计算公式_200KW三相四线制线路,需要多少A电源空开?...
- 用java写新年快乐特效代码_蓝叶分享新年快乐大红灯笼特效代码
- 9大代理服务器软件的比较与分析之CCProxy、Squid
- 高德足迹地图在哪里_高德地图怎么点亮城市 足迹地图查看方法
- 关于《论文写作》课程的心得和体会
- C#模拟按键的一种实现方法
- 网站变灰,6行代码,通通变灰
- 【博客628】k8s pod访问集群外域名原理以及主机开启了systemd-resolved的不同情况
- VB.NET学习笔记:ADO.NET操作ACCESS数据库——ADO.NET数据访问接口
热门文章
- spring mvc基本概念
- 如何高效开发端智能算法?MNN 工作台 Python 调试详解
- 滨州学院计算机自荐考试题型,滨州学院2004—2005学年第一学期期末考试计算机科学教育专业02级《数据库原理》试题及答案(3份,另附习题集)...
- 1亿数据 redis 内存_redis 存1亿数据库
- Docker网络——实现容器间通信、容器与外网通信以及容器的跨主机访问
- 递归算法经典实例_掌握这10道经典面试算法题(含答案),攻克递归算法【程序员必备】...
- java 默认字符集 iso_第二篇:JAVA字符编码系列二:Unicode,ISO-8859-1,GBK,UTF-8编码及......
- uml 时序图_设计模式-UML
- ngrok服务器搭建_C/C++ Linux 后台服务器开发高级架构师学习知识路线总结
- python提取excel中的某几列数据-python-将excel中的某些列读取到数据框