目录

  • 一.##运算符简介
  • 二.##运算符使用
    • 1.##运算符常规使用
    • 2.##运算符定义结构体
  • 三.猜你喜欢

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门

一.##运算符简介

C 语言关于 define 的文章中我们有介绍到:凡是以#开头的均为预处理指令,预处理又叫预编译。预编译不是编译,而是编译前的处理。这个操作是在正式编译之前由系统自动完成的。

C 语言除了**#运算符,还有 ##运算符 ;与 #运算符类似,##运算符可用于类函数宏(带参宏)的替换部分。##运算符可以把两个记号组合成一个记号。例如,可以这样做:**

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 ##运算符
//@Time:2021/07/10 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/#define XVALUE(n) x##n //将符号 x 和 n 合并为一个记号
#define YVALUE(n) y##n //将符号 y 和 n 合并为一个记号
#define ZVALUE(n) z##n //将符号 z 和 n 合并为一个记号int XVALUE(1) = 10; //等价 int x1 = 10
int YVALUE(1) = 10; //等价 int y1 = 10
int ZVALUE(1) = 10; //等价 int z1 = 10

二.##运算符使用

1.##运算符常规使用

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 ##运算符
//@Time:2021/07/10 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/#include<stdio.h>#define XVALUE(n) x##n //将符号 x 和 n 合并为一个记号
#define YVALUE(n) y##n //将符号 y 和 n 合并为一个记号
#define ZVALUE(n) z##n //将符号 z 和 n 合并为一个记号#define NUM(a,b,c) a##b##cint main()
{int XVALUE(1) = 10; //等价 int x1 = 10int YVALUE(1) = 10; //等价 int y1 = 10int ZVALUE(1) = 10; //等价 int z1 = 10printf("XVALUE(1) = %d\n",XVALUE(1));printf("NUM(1,2,3) = %d\n",NUM(1,2,3));return 0;
}/*
XVALUE(1) = 10
NUM(1,2,3) = 123
*/

2.##运算符定义结构体

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 ##运算符
//@Time:2021/07/10 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/#include <stdio.h>#define  STRUCT(type)  typedef  struct  _tag_##type  type;\
struct  _tag_##typeSTRUCT(Student)
{char* name;int id;
};/*
//STRUCT(Student) 等价:typedef struct _tag_Student Student;struct _tag_Student
{char* name;int id;
};*/int main()
{Student s1;Student s2;s1.name = "s1";s1.id = 0;s2.name = "s2";s2.id = 1;printf("Student s1 name: %s\n", s1.name);printf("Student s1 id: %d\n", s1.id);printf("Student s2 name: %s\n", s2.name);printf("Student s2 id: %d\n", s2.id);return 0;
}/*
Student s1 name: s1
Student s1 id: 0
Student s2 name: s2
Student s2 id: 1
*/

C 语言可以先 [typedef](https://www.codersrc.com/archives/8854.html) 然后在定义,只要在某处最终把 struct 定义出来后,无论在任何地方都可以重新 typedef ,并不是必须先定义 structtypedef;

三.猜你喜欢

  1. C 语言 数组下标越界和内存溢出区别
  2. C 语言 指针声明和定义
  3. C 语言 指针 p++ / p–
  4. C 语言 p++/§++/_(p++)/_p++
  5. C 语言 使用指针遍历数组
  6. C 语言 指针和数组区别
  7. C 语言 指针数组和数组指针区别
  8. C 语言 空指针 NULL
  9. C 语言 void 指针
  10. C 语言 野指针
  11. C 语言 函数值传递和址传递
  12. C 语言 函数缺省参数
  13. C 语言 函数不定长参数
  14. C 语言 函数指针
  15. C 语言 指针函数
  16. C 语言 回调函数 callback
  17. C 语言 typedef
  18. C 语言 define 定义常量
  19. C 语言 define 防止头文件重复包含
  20. C 语言 #pragma once
  21. C 语言 #include <> 与 #include “” 区别
  22. C 语言 const 修饰变量
  23. C 语言 const 修饰指针
  24. C语言 const 修饰函数
  25. C 语言 const 修饰函数参数
  26. C 语言 const 和 define 区别
  27. C 语言 #运算符
  28. C 语言 ##运算符

未经允许不得转载:猿说编程 » C 语言 ##运算符

C语言 ##运算符 - C语言零基础入门教程相关推荐

  1. C语言 const 修饰函数参数 - C语言零基础入门教程

    C语言 const 修饰函数参数 - C语言零基础入门教程 目录 一.const 简介 1.const 修饰变量 2.const 修饰指针 3.const 修饰在函数名前面 4.const 修饰在函数 ...

  2. 视频教程-Python零基础入门教程-Python

    Python零基础入门教程 从2012年从事互联网至今有7年软件编程经验,曾任职国内北京互联网公司,中南林业大学授课Python 现任逻辑教育Python课程负责人,精通Python语言,精通人工智能 ...

  3. C++零基础入门教程:基础篇(一)

    前言 嘿嘿,我叕来啦─=≡Σ(((つ•̀ω•́)つ!别问我为什么突然变成了零基础入门教程(一),因为前面那三篇都是基础的不能在基础的教程了.(其实是因为顺序乱了,而且那时候没有单独弄一个专栏,后面我会 ...

  4. Python零基础入门教程( 快速入门)

    前言 学无止境,无止境学. 今天要给大家分享的是<Python零基础入门教程01 快速入门>,这是一个系列的教程,从零基础到项目实战.在本教程中,我会给大家介绍Python入门的一些基础知 ...

  5. 周易零基础入门教程(一)

    感觉这几篇简单的教程很不错哦.大概由于以前看过这类书籍,估计也是很零散的,所以我读这几篇感觉很亲切,没啥难点,一口气读完了,醍醐灌顶.接下来就是自己慢慢琢磨的节奏了! 周易零基础入门教程 作者:江南易 ...

  6. python怎么输出浮点数_python 零基础入门教程第 2 章:基本数据类型 (一)

    一.什么是数据类型 编程语言通过一些复杂的计算机物理底层机制,创造不同类型的数据,用来表示现实世界中的不同信息,以便于计算机更好的存储和计算. 每种编程语言都会有一些基本的数据类型用来表示现实世界中的 ...

  7. SEO零基础入门教程(外链的发布和软文编写)

    seo的作用是众所周知的,对网站进行seo优化,可以给网站带来大量的搜索引擎流量.但是想要做好网站优化也有难度,尤其是对于seo新手来说,因为缺乏理论和实战,所以seo新手需要多加练习.那么具体seo ...

  8. 九宫怎么排列和使用_剪映零基础入门教程第三十七篇:一学就会系列之九宫格小程序配音...

    很多玩儿抖音的朋友都看过九宫格视频,但是并不是每个玩抖音的人都会制作这个九宫格视频,实际这个需要借助小工具来帮忙,而常用抖音的朋友们会对剪映更加熟悉一些,且九宫格视频在剪映内的制作方式则比较简单.那么 ...

  9. 计算机pscs6教程,photoshop CS6零基础入门教程

    <photoshop CS6零基础入门教程>针对零基础学员开设,以教案和实际操作演示相结合的方式,详细地介绍adobe photoshop cs6的各项工具和命令.由浅入深.循序渐进地全面 ...

  10. finereport自学教程_办公物语丨Finereport零基础入门教程,你不可缺少的报表神器...

    原标题:办公物语丨Finereport零基础入门教程,你不可缺少的报表神器 ⌛ 小办又来了,快,搬好你的小板凳. 今天小办要着重讲一下 之前推文里提到过的制表神器. 当你逐渐发现Excel不能满足你的 ...

最新文章

  1. Eclipse+SVN搭建开发环境
  2. RESTful Web 服务 - 安全性
  3. selenium(2.4.0)中不能导出web drive 代码
  4. 年终将至,回顾我们一起走过的 2020
  5. .Net System.Object类介绍
  6. python文件输出log_Python同时向控制台和文件输出日志logging的方法
  7. Apache ActiveMQ 远程代码执行漏洞记录(CVE-2016-3088,端口:8186)
  8. Keys.js 官方使用说明
  9. 排序算法合集 python
  10. 寻找安全漏洞?谨慎为之
  11. java反射class文件_Java反射(一)Class
  12. 【CV学习笔记】图像的计算
  13. Docker使用(三)使用Dockerfile创建镜像以及为镜像添加SSH服务
  14. 树莓派开发界面显示温度_关于树莓派linux开发板
  15. 文言文亦能编程,该项目在GitHub摘得5500星!
  16. COMSOL学习经验(不定期更新中哦~)
  17. Beamforming and Antenna Pattern 2021-11-05
  18. 前端监控:回放录制库 rrweb
  19. 【华人学者风采】Ting Xu 加州大学伯克利分校
  20. AIX存储LV PV VG

热门文章

  1. 拿下 Gartner 容器产品第一,阿里云打赢云原生关键一战!
  2. DLA SQL技巧:行、列转换和JSON数据列展开
  3. Node.js 应用故障排查手册 —— 冗余配置传递引发的内存溢出
  4. AliOS Things声源定位应用演示
  5. IPv6转换服务正式发布
  6. 普诺飞思公布发明者社区,启发基于事件视觉技术的创新
  7. “智汇光大 E启未来” 中国光大集团ESBU协同核心系统1.0正式发布
  8. WIAC上,华为展区都有点儿啥?
  9. devc++源文件未编译_iOS 编译知识小结
  10. android实现10ms定时器,Android三种实现定时器的方法