C语言之预处理探究(四):#、##和预定义宏
相关博文:C语言之预处理探究(三):头文件包含
相关博文:C语言之预处理探究(二):条件编译(Condition Compile)
相关博文:C语言之预处理探究(一):宏
一. #运算符,利用宏创建字符串
例1:
附例1代码:
//小问学编程
#include<stdio.h>#define str(x) xint main()
{printf("%d\n",str(3));printf("%s\n",str("abc"));printf("%c\n",str('a'));return 0;
}
例2:把传进来的东西进行字符串化
附例2代码:
//小问学编程
#include<stdio.h>#define str(x) "aa"#x"bb"int main()
{printf("%s\n",str(3));printf("%s\n",str("abc"));printf("%s\n",str('a'));printf("%s\n",str(abc));printf("%s\n",str(a));return 0;
}
例3:
附例3代码:
//小问学编程
#include<stdio.h>#define printSqr(x) printf("sqr("#x")=%d\n",x*x)int main()
{printSqr(5);return 0;
}
二. ##运算符,预处理的粘合剂
例4:
附例4代码:
//小问学编程
#include<stdio.h>#define S(a,b) a+a+b+bint main()
{printf("%d\n",S(1,2));return 0;
}
例5:
附例5代码:
//小问学编程
#include<stdio.h>#define S(a,b) a##a+b##bint main()
{printf("%d\n",S(1,2));return 0;
}
例6:
附例6代码:
//小问学编程
#include<stdio.h>#define X(n) x##nint main()
{int X(1)=10;int X(2)=20;printf("x1=%d x2=%d\n",x1,x2);return 0;
}
例7:定义变量的时候没看到,打印变量的时候也没看到
附例7代码:
//小问学编程
#include<stdio.h>#define XNAME(n) x##n
#define PRINT_XN(n) printf("x"#n"=%d\n",x##n)int main()
{int XNAME(1)=14;int XNAME(2)=20;//printf("x1=%d,x2=%d\n",x1,x2);PRINT_XN(1);//隐藏了变量的声明和使用PRINT_XN(2);return 0;
}
三. 预定义宏
在打印日志的时候有用,现在已经不怎么用了,因为现在的编译器DEBUG功能实在太强大了。
例8:
附例8代码
//小问学编程
#include<stdio.h>
#include<stdlib.h>void why_me();
int main()
{printf("The file is %s.\n",__FILE__);printf("The date is %s.\n",__DATE__);printf("The time is %s.\n",__TIME__);printf("The is line %d.\n",__LINE__);printf("The function is %s.\n",__func__);why_me();return 0;
}
void why_me()
{printf("This function is %s.\n",__func__);printf("The file is %s.\n",__FILE__);printf("This is line %d.\n",__LINE__);
}
可参考博文:C语言中的__FUNCTION__,_FILE_和_LINE_用法
C语言之预处理探究(四):#、##和预定义宏相关推荐
- C语言之预处理探究(三):头文件包含
相关博文:C语言之预处理探究(四):#.##和预定义宏 相关博文:C语言之预处理探究(二):条件编译(Condition Compile) 相关博文:C语言之预处理探究(一):宏 参考博文:C语言的头 ...
- C语言之预处理探究(二):条件编译(Condition Compile)
相关博文:C语言之预处理探究(四):#.##和预定义宏 相关博文:C语言之预处理探究(三):头文件包含 相关博文:C语言之预处理探究(一):宏 条件编译即依据条件,判断哪些程序段参与编译. 一.单 ...
- C语言之预处理探究(一):宏
相关博文:C语言之预处理探究(四):#.##和预定义宏 相关博文:C语言之预处理探究(三):头文件包含 相关博文:C语言之预处理探究(二):条件编译(Condition Compile) 一. 发生时 ...
- C语言之字符串探究(四):读越界、写越界
相关博文:C++之char和string字符串类探究 相关博文:C语言之数组探究(一):定义.大小.初始化.访问和三要素 相关博文:C语言之字符串探究(一):字符串与字符数组 相关博文:C语言之字符串 ...
- c/c++标准预定义宏
转自:http://www.eefocus.com/andysun001/blog/10-06/192018_008b3.html 一.标准预定义宏 The standard predefined m ...
- ANSIC标准定义的6种预定义宏
From: http://biancheng.dnbcw.info/c/277439.html ANSIC标准定义了以下6种可供C语言使用的预定义宏: __LINE__ ...
- WIN32 预定义宏WIN32,_WIN32,_WIN64介绍使用
1.WIN32宏 在 Win32 配置下,WIN32 在"项目属性-C/C++-预处理器-预处理器定义"里声明了,而在 x64 配置下,这个常量并不在项目预定义列表中.这是否说明可 ...
- C++编程-预定义宏
给出我写的一个函数: //环境参数 预定义宏 void environment() { cout << "__DATE__ = " << __DATE__ ...
- ANSI C标准预定义宏
__LINE__:在源代码中插入当前源代码行号: __FILE__:在源文件中插入当前源文件名: __DATE__:在源文件中插入当前的编译日期 __TIME__:在源文件中插入当前编译时间: __S ...
最新文章
- 触手可得的云原生 | 阿里云中间件发布多项新功能
- [C++对象模型][8]多重继承与虚函数表
- 专科 java转go 翱翔之路(二)基础语法:匿名组合,方法,接口,map,json,异常处理,channel管道,select用法
- 无需重新部署Eclipse和Tomcat即可进行更改
- 重识 SQLite,简约不简单
- java 点击一下左边按钮_右边显出一列表_举个例子_java椭圆按钮怎么设置,最好举一个简单的例子,只要有窗体中一个椭圆按钮就可以,最好有注释,谢谢,好的...
- 进阶!基于CentOS7系统使用cobbler实现单台服务器批量自动化安装不同版本系统(week3_day5_part2)-技术流ken...
- css横向排列_CSS中伪元素和伪类的经典使用技巧
- 【android自定义控件】button样式自定义二
- Quartz定时器实现
- tlsf算法-概念、原理、内存碎片问题分析
- 映美精工业相机与电脑通信及报错解决方案
- 简化“复杂”的层级管理,实现团队作战式的目标协同
- 泡泡龙游戏c语言程序,《泡泡龙》发射技巧总结_图文攻略_高分攻略_百度攻略...
- 2022.10.13(四)[仿写《百草园到三味书屋》第二段]
- 关于USIM卡的全面测试综述
- linux usb gadget驱动详解(一)
- php报纸源码,PHP报纸在线阅读程序 电子读报系统 杂志在线阅读源码 DM阅读源码...
- ubuntu20.04修改编译chromium源码实战
- Ubuntu18.04 安装Proverif 和Syther_tool