- 论坛徽章:
- 0
|
linux2.6.14.3 内核中有如下宏定义,
- #define DEFINE(sym, val) \
- asm volatile("\n->" #sym " %0 " #val : : "i" (val))
复制代码
没弄清它的用法,于是用如下函数做了一下试验,所得结果更是让人不解。
宏定义中从"\n->"中的"-"开始的后续部分被编译器忽略。gcc提示为
Warning: rest of line ignored; first character is '-.
(采用如下格式编译:gcc -o tf tf.c)
程序打印结果为:0。
- /*tf.c*/
- #include "stdio.h"
- #define DEFINE(sym,val) \
- asm volatile("\n->" #sym " %0 " #val : :"i" (val))
- int main(int argc,char* agrv[])
- {
- int Ti=0;
- DEFINE(Ti,8);
- printf("\n The value of Ti is:%d\n",Ti);
- return ;
- }
复制代码
[ 本帖最后由 albcamus 于 2006-2-17 18:07 编辑 ] |
|