关于#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));

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

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 文章: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指令行的末尾没有分号。


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