相关博文: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语言之预处理探究(四):#、##和预定义宏相关推荐

  1. C语言之预处理探究(三):头文件包含

    相关博文:C语言之预处理探究(四):#.##和预定义宏 相关博文:C语言之预处理探究(二):条件编译(Condition Compile) 相关博文:C语言之预处理探究(一):宏 参考博文:C语言的头 ...

  2. C语言之预处理探究(二):条件编译(Condition Compile)

    相关博文:C语言之预处理探究(四):#.##和预定义宏 相关博文:C语言之预处理探究(三):头文件包含 相关博文:C语言之预处理探究(一):宏   条件编译即依据条件,判断哪些程序段参与编译. 一.单 ...

  3. C语言之预处理探究(一):宏

    相关博文:C语言之预处理探究(四):#.##和预定义宏 相关博文:C语言之预处理探究(三):头文件包含 相关博文:C语言之预处理探究(二):条件编译(Condition Compile) 一. 发生时 ...

  4. C语言之字符串探究(四):读越界、写越界

    相关博文:C++之char和string字符串类探究 相关博文:C语言之数组探究(一):定义.大小.初始化.访问和三要素 相关博文:C语言之字符串探究(一):字符串与字符数组 相关博文:C语言之字符串 ...

  5. c/c++标准预定义宏

    转自:http://www.eefocus.com/andysun001/blog/10-06/192018_008b3.html 一.标准预定义宏 The standard predefined m ...

  6. ANSIC标准定义的6种预定义宏

    From: http://biancheng.dnbcw.info/c/277439.html ANSIC标准定义了以下6种可供C语言使用的预定义宏:           __LINE__       ...

  7. WIN32 预定义宏WIN32,_WIN32,_WIN64介绍使用

    1.WIN32宏 在 Win32 配置下,WIN32 在"项目属性-C/C++-预处理器-预处理器定义"里声明了,而在 x64 配置下,这个常量并不在项目预定义列表中.这是否说明可 ...

  8. C++编程-预定义宏

    给出我写的一个函数: //环境参数 预定义宏 void environment() { cout << "__DATE__ = " << __DATE__ ...

  9. ANSI C标准预定义宏

    __LINE__:在源代码中插入当前源代码行号: __FILE__:在源文件中插入当前源文件名: __DATE__:在源文件中插入当前的编译日期 __TIME__:在源文件中插入当前编译时间: __S ...

最新文章

  1. 触手可得的云原生 | 阿里云中间件发布多项新功能
  2. [C++对象模型][8]多重继承与虚函数表
  3. 专科 java转go 翱翔之路(二)基础语法:匿名组合,方法,接口,map,json,异常处理,channel管道,select用法
  4. 无需重新部署Eclipse和Tomcat即可进行更改
  5. 重识 SQLite,简约不简单
  6. java 点击一下左边按钮_右边显出一列表_举个例子_java椭圆按钮怎么设置,最好举一个简单的例子,只要有窗体中一个椭圆按钮就可以,最好有注释,谢谢,好的...
  7. 进阶!基于CentOS7系统使用cobbler实现单台服务器批量自动化安装不同版本系统(week3_day5_part2)-技术流ken...
  8. css横向排列_CSS中伪元素和伪类的经典使用技巧
  9. 【android自定义控件】button样式自定义二
  10. Quartz定时器实现
  11. tlsf算法-概念、原理、内存碎片问题分析
  12. 映美精工业相机与电脑通信及报错解决方案
  13. 简化“复杂”的层级管理,实现团队作战式的目标协同
  14. 泡泡龙游戏c语言程序,《泡泡龙》发射技巧总结_图文攻略_高分攻略_百度攻略...
  15. 2022.10.13(四)[仿写《百草园到三味书屋》第二段]
  16. 关于USIM卡的全面测试综述
  17. linux usb gadget驱动详解(一)
  18. php报纸源码,PHP报纸在线阅读程序 电子读报系统 杂志在线阅读源码 DM阅读源码...
  19. ubuntu20.04修改编译chromium源码实战
  20. Ubuntu18.04 安装Proverif 和Syther_tool

热门文章

  1. thymeleaf的属性优先级
  2. 基于springboot框架的java学生管理系统
  3. c语言程序设计的常用算法,《C语言程序设计的常用算法.doc
  4. mysql全文索引 插件,如何编写MySQL全文索引插件
  5. linq与数据库之添加
  6. 程序员入门--两年养成之路
  7. db2 设置表 not null
  8. hdu5751 Eades
  9. 浅析MongoDB用户管理
  10. [oracle原]访问局域网内出现“ORA-12541:TNS:无监听程序”