wen58tao 2014-03-17 01:15 采纳率: 0%
浏览 817

关于#define和typedef的使用?

最近在看微软某个SDK源码,看到一段宏定义之类的,实在没看懂,这段代码如下:
#define CREATE_BRICK_SOURCE(NAME, TPL_BRICK, CONTEXT, NEXT_BRICK) \
typedef TPL_BRICKC_##NAME; \
typedef __C_##NAME *
S_##NAME; \
S_##NAME NAME(aligned_new(C_##NAME, CONTEXT, NEXT_BRICK));

求大神解释解释该怎么看懂这段代码啊

  • 写回答

1条回答

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-20 21:23
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 文章:C语言 typedef 和 #define详解 中也许有你想要的答案,请看下吧
    • 同时,你还可以查看手册:c++- #define - # - ## 中的内容
    • 除此之外, 这篇博客: C语言 typedef 和 #define详解中的 符号常量 #define 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

      摘自 《C程序设计语言》1.4节
        在结束讨论温度转换程序前,我们再来看一下符号常量。在程序中使用300、20等类似的“幻数”并不是一个好习惯,它们几乎无法向以后阅读该程序的人提供什么信息,而且使程序的修改变得更加困难。处理这种幻数的一种方法是赋予它们有意义的名字。#define指令可以把符号名(或称为符号常量)定义为一个特定的字符串:

      #define  名字  替换文本
      

      在该定义之后,程序中出现的所有在#define 中定义的名字(既没有用引号引起来,也不是其它名字的一部分)都将用相应的替换文本替换。其中,名字与普通变量名的形式相同:它们都是以字母打头的字母和数字序列;替换文本可以是任何字符序列,而不仅限于数字。

      #include <stdio.h>
      #define LOWER 0   /*lower limit of table */
      #define UPPER 300  /*upper limit */
      #define STEP 20   /*step size * /
      /*print Fahrenheit-Celsius table */
      main()
      {
      	int fahr;
      	for (fahr = LOWER; fahr <= UPPER; fahr = fahr + STEP)
      		printf ("%3d %6.1f\n", fahr, (5.0/9.0)* (fahr-32 ));
      }
      

      其中,LOWER、UPPER与 STEP都是符号常量,而非变量,因此不需要出现在声明中。符号常量名通常用大写字母拼写,这样可以很容易与用小写字母拼写的变量名相区别。注意,#define指令行的末尾没有分号。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊