ChinaUnix.net
相关文章推荐:

#define 全局宏

请问下面的为什么要加上##,是变长参数的原因吗?[code]#define DEBUG(fmt, args...) fprintf(stderr, fmt, ##args)[/code]

by dengjin_cu - C/C++ - 2012-01-05 11:14:32 阅读(2181) 回复(4)

相关讨论

#define tile_num(x,y) ((y)*map_w+(x)) //将 x,y 坐标转换为地图上块的编号 #define tile_x(n) ((n)%map_w) //由块编号得出 x,y 坐标 #define tile_y(n) ((n)/map_w) void printpath(int *path) { int i; for (i=0;path>=0;i++) { gotoxy(tile_x(path)+1,tile_y(path)+1); //181行 cprintf("\xfe"); } } 编译 a.c:181: error: invalid operands to binary % a.c:181: error: invalid operands to binary / 出...

by jd808 - C/C++ - 2010-01-13 16:30:32 阅读(1442) 回复(4)

看了RADIUS的源代码: #ifndef _SELECT_H #define _SELECT_H 第二行#define _SELECT_H之后并没有给_SELECT_H值啊? 这是怎么回事? 我的理解: _SELECT_H是unix系统的值,但是为什么第二行没有给_SELECT_H进行替换的值呢?

by bjldlee - C/C++ - 2004-10-27 22:55:02 阅读(2825) 回复(12)

我在《C程序设计语言》dennis Ritchie这本书中看到对定义的语法描述为: #define 名字 替换文本 这个很容易理解, 但是今天我在一本书上看到有这样一条替换语句: #define SWITCH_PRESSED (bit) 1 对此,我感到疑惑,为什么在“#define”后面有三个部分,而不是只有 “名字”和“替换文本”两个部分? 难道是把“(bit) 1 ”当做一个整体作为替换文本吗?

by 耐心学习 - C/C++ - 2011-11-28 13:58:01 阅读(2055) 回复(2)

今天看u-boot的源码,发现 #define XMK_STR(x) #x #define MK_STR(x) XMK_STR(x) 上网搜了一下,#x就是给x加双引号 自己写了几句测试: A(1234)和B(1234)执行的结果一样,但是A(x)和B(x)为何不一样?展开是怎么展开的

by Huntsmen - C/C++ - 2008-12-27 11:17:59 阅读(5674) 回复(9)

首先,在arch/i386/kernel/vmlinux.lds中有 /* will be freed after init */ . = ALIGN(4096); /* Init code and data */ __init_begin = .; /* 此处省略若干行:) */ . = ALIGN(32); [color="red"] __per_cpu_start = .; .data.percpu : { *(.data.percpu) } __per_cpu_end = .; . = ALIGN(4096); __init_end = .; /* freed after init ends here */ 这说明__per_cpu_start和__per_cpu_end标识.dat...

by wuqixuan - Linux文档专区 - 2008-08-02 13:11:37 阅读(866) 回复(0)

首先,在arch/i386/kernel/vmlinux.lds中有 /* will be freed after init */ . = ALIGN(4096); /* Init code and data */ __init_begin = .; /* 此处省略若干行:) */ . = ALIGN(32); __per_cpu_start = .; .data.percpu : { *(.data.percpu) } __per_cpu_end = .; . = ALIGN(4096); __init_end = .; /* freed after init ends here */ 这说明__per_cpu_start和__per_cpu_end标识.data.percpu这个sect...

by ramen.sh - Linux文档专区 - 2008-07-21 11:17:10 阅读(706) 回复(0)

define_machine定义为: include/asm-powerpc/machdep.h #define __machine_desc __attribute__ ((__section__ (".machine.desc"))) #define define_machine(name) \ extern struct machdep_calls mach_##name; \ EXPORT_SYMBOL(mach_##name); \ struct machdep_calls mach_##name __machine_desc = 它的使用,比如:...

by mpoix - 内核源码 - 2008-07-22 10:59:31 阅读(4194) 回复(1)

#define VH (*(int far*)0x450) // 怎么去解释它 , 是far 指针指向450位址吗?? //它是放在标头档内 VH 就可以直接把 int 型态的值存到450地址里面吗??? 我搞不懂的是450 内存地址会不会有其他程式在使用??? 如果直接把值存入 不是有问题 #define VH (*(int far*)0x450) // 改成 #define VH (*(int *far)0x450) 可以吗?? // 因为一般指针宣告不是 int * far ... 怎么巨集中会用int far* 还有#define VH (*(int far*)0x...

by shihyu - C/C++ - 2007-01-22 15:40:07 阅读(1641) 回复(3)

本帖最后由 LostC 于 2011-05-06 15:34 编辑 的定义:[code]#define MS_FILTER_METHOD_ID(_id_,_cnt_,_argsize_) \ ( (((unsigned long)(_id_)) & 0xFFFF)<<16 | (_cnt_<<8) | (_argsize_ & 0xFF )) [/code]是怎么工作的?有知道的说下哈,谢谢咯!!

by LostC - C/C++ - 2011-05-06 15:32:59 阅读(1804) 回复(0)

是C语言参考手册上的一个例子。 定义一个: #define insert(stmt) stmt 调用的方法: insert( {a=1; b=1;} ) //正确 insert( {a=1, b=1;} ) //error:传递太多参数给insert 帮忙解释一下原因啊! [ 本帖最后由 Godbach 于 2007-8-28 16:48 编辑 ]

by Godbach - C/C++ - 2007-08-28 16:43:31 阅读(2442) 回复(12)