C中的define 特殊用法

2014-04-06 17:41:27 · 作者: · 浏览: 130

  首先来看一个例子:

  这个很平常,大家都会用,但如果是下面这样使用,可以吗

  好,让我们来编译一下,看是什么情况。

  再看一下,宏展开后是怎木样的! (宏展开:$: gcc -E -P tt.c > file, 过后打开file文件就会看见)

  编译时 发现错误,重定义了 i 变量。这是为什么

  因为定义的宏是在编译时就在调用处展开了,当两个宏定义FUN()在同一作用域中调用时,就会发生变量重定义了。

  那么有什么方法可以使这种调用正确呢 请看下面:

  经编译,没法现错误,为什么 我们再来看看展开后的宏:

  没发生错误,是因为在这里产生了两个不同的变量,i1,i2,。