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指令行的末尾没有分号。


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

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料