一、#的用法

#用于编译器编译过程进行预处理。

1、宏定义
#define ON  1#ifndef _PARA_
#define _PARA_
#enddef#ifdef _PARB_
#define DEFAULT_SIZE 1024
#enddef2、宏开关
#if VAR
...
#elif
...
#end3、显示设定错误
#error ERROR: Not Define4、设置字节对齐
#pragma pack(1)

#还可以用于宏定义时转变参数为字符串,需要注意#无法再次展开,宏定义替换的时候遇到#就停止向下进一步展开,但是可以通过中间再写一个转换宏,进行替换。


e.g.1:
#define STR(str)      #str
char *mystr = STR(test);
printf("%s",mystr);
result: "test" e.g.2:
#define STR(str)      #str
char *myits =STR(1024);
printf("%s",myits);
result: "1024" e.g.3:
#define STR(str)       #str
#define SIZE           1024
char *myint =STR(SIZE);
printf("%s",myint);
result: "SIZE" //此处输出式SIZE 因为SIZE是一个宏,不会再展开e.g.4:
#define _STR(str)      #str
#define STR(str)       _STR(str)
#define SIZE           1024
char *myint =STR(SIZE);
printf("%s",myint);
result: "1024" //增加了中间层,可以正确转换

二、##的用法

##用于宏定义时将两个内容进行拼接。


e.g.1:
#define LINK2(a,b)      a##b
char *mystr = LINK2(o,k);
printf("%s",mystr);
result: "ok" e.g.2:
#define LINK3(a,b,c)      a##b##c
char *mystr = LINK3(c,+,+);
printf("%s",mystr);
result: "c++" 

C语言中#、##宏定义的用法相关推荐

  1. C语言中定义常量的关键字是什么,C++_详解C语言中const关键字的用法,关键字const用来定义常量,如 - phpStudy...

    详解C语言中const关键字的用法 关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变,我想一定有人有这样的疑问,C语言中不是有#define吗,干嘛还要用const ...

  2. c语言中 char怎样用,C语言中char*和char[]用法区别分析

    C语言中char*和char[]用法区别分析 本文实例分析了C语言中char* 和 char []的区别.分享给大家供大家参考之用.具体分析如下: 一般来说,很多人会觉得这两个定义效果一样,其实差别很 ...

  3. scanf在c语言中的作用,c语言中scanf的基本用法

    前言 scanf()是C语言的格式输入函数,和printf函数一样被声明在stdio.h头文件中,它的基本使用很简单: 1 int a; 2 scanf("%d",&a); ...

  4. c语言time函数的作用,c语言中time函数的用法

    c语言中time函数的用法 c语言中time函数的用法的用法你知道吗?下面应届毕业生小编就跟你们详细介绍下c语言中time函数的用法的用法,希望对你们有用. c语言中time函数的用法的用法如下: 头 ...

  5. c语言sinx的作用,C语言中 sinx cosx 的用法

    #include #include int main() { double pi=acos(-1.0); double angle; scanf("%lf",&angle) ...

  6. sizeof 在C语言的作用,C语言中的sizeof的用法详解

    C语言中的sizeof的用法详解 一.sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++.--等.它并不是函数.sizeof操作符以字节形式给出了其操作数的存储大小.操 ...

  7. c语言中rand()的作用,c语言中的rand()函数用法

    rand() rand()函数作用:用来产生随机数,但是,rand()的内部实现是用线性同余法实现的,是伪随机数,由于周期较长,因此在一定范围内可以看成是随机的. rand()函数返回:返回一个范围在 ...

  8. C语言中atoi()函数的用法

    C语言中atoi()函数的用法 一.学习要点: 1.int atoi(const char *str)把参数str所指向的字符串转换为一个整数: 二.代码 #include<stdio.h> ...

  9. python语言中with as的用法使用详解

    本篇文章主要介绍了python语言中with as的用法使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 With语句是什么? 有一些任务,可能事先需要设置,事后做 ...

  10. c语言memcopy_C语言中memcpy 函数的用法详解

    C语言中memcpy 函数的用法详解 memcpy(内存拷贝函数) c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址 ...

最新文章

  1. python argsort排序结果_numpy.argsort()可以对元组或列表进行排序
  2. php如何实现根据地区内筛选,PHP区块查询实现方法分析
  3. [hdu4333]Revolving Digits
  4. 恶补各种知识(操作系统篇)
  5. 牛客 - 降维打击(dp)
  6. Netbeans8下 Weblogic EJB案例
  7. python的web可视化_Python的Web可视化框架Dash(8)---核心组件
  8. Linux备份策略(第二版)
  9. 江阴市高中计算机会考知识点,最新!2019年江阴中考体育考试方案发布!速看.........
  10. 【系统架构设计师】软考高级职称,一次通过,倾尽所有,2016年下半年系统架构设计师考试论文真题(论微服务架构及其应用)
  11. 设置SVN忽略文件和文件夹(文件夹)
  12. Java实现计算器的基本功能
  13. 为什么梯度反方向是函数下降最快的方向?
  14. 语音混响制作matlab,1 语音信号的延时和混响 1)利用Windows下的录音机或其他软件,录制一段自己的 matlab 238万源代码下载- www.pudn.com...
  15. 水经注地图发布服务中间件服务配置功能说明
  16. 【原创】个人常用电脑软件、浏览器插件、手机APP常用推荐
  17. 网络1711-12信管1711-12 图 作业评分
  18. 令人不寒而栗的黄蓉(转)
  19. oracle查询挂起,表挂起更新查询Oracle 11g(Table hangs on Update query Oracle 11g)
  20. 男人冬季吃羊肉有哪些好处男人冬季吃羊肉有哪些好处

热门文章

  1. python怎么备份列表_python实例:backup 备份
  2. 华为杯数学建模2020获奖名单_我校在2020年全国大学生数学建模竞赛中再获佳绩(内附获奖名单)...
  3. mysql 多数据源访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码
  4. 如何对mysql做物理备份_如何创建物理MySQL备份
  5. Linux 系统应用编程——网络编程(I/O模型)
  6. 微信小程序中base64转换成图片;uni-app小程序base64转图片;微信小程序base64文件转图片;微信小程序base64图片转图片
  7. 前端学习(3309):redux项目创建和概况
  8. 前端学习(2991):vue+element今日头条管理--使用vue-cli解决问题
  9. [html] 后缀.html和.htm有什么区别?
  10. [html] 如何使用html5进行图片压缩上传?