C语言的作用域/namespace分析
来源:优易学  2010-1-14 10:55:25   【优易学:中国教育考试门户网】   资料下载   IT书店

 

  [1] (int *)x和(int *(const int))x不在同一层namespace,编译通过.

  链接时出错.(int *)x将(int *(const int))x覆盖,所以在c行时会找不到匹配的函数名

  Code

  1 int x(const int int_a) {return int_a;}   //a

  2

  3 struct x

  4 {

  5     int x;

  6 };

  7

  8 //#define x(x)  x

  9

  10 int main(int argc, char *argv[])

  11 {

  12     int *x = calloc(1, sizeof x);        //b

  13

  14     x: (((struct x *)x)->x) = x(5);      //c

  15

  16     printf("%p\n", ((struct x *)x)->x);

  17

  18     return 0;

  19

  [2] 编译通过

  Code

  1 int x(const int int_a) {return int_a;}

  2

  3 struct x

  4 {

  5     int x;

  6 };

  7

  8 //#define x(x)  x

  9

  10 int main(int argc, char *argv[])

  11 {

  12     int *x = calloc(1, sizeof x);

  13

  14     //x: (((struct x *)x)->x) = x(5);

  15

  16     //printf("%p\n", ((struct x *)x)->x);

  17

  18     return 0;

  19 }

  20

  [3] 编译出错.(int *)x和(int *(const int))x在同一层namespace,冲突.

  1 int x(const int int_a) {return int_a;}

  2

  3 int *x;

  4

  5 int main(int argc, char *argv[])

  6 {

  7     return 0;

  8 }

  9

上一页  [1] [2] [3] [4] 下一页

责任编辑:cyth

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训