所以C++要说C宏语法的不是。
你#define N 3,那实际上只是标识一个常数,里面定义的三个数组,都是a[3]、b[3]、c[3],只能容纳2个char(外加一个空字符'\0')。C/C++是不检查越界的,编译通过,但运行时若输入了超越边界的字符,系统就强制这个程序结束。不要以为N是变量,它从头至尾都被编译器用3来替换了代码文本中的字符N,这是字符搜索替换的操作,在编译器实际编译程序代码之前进行,此时C的语法还没有起作用——因此C++强烈不建议程序员用宏,除了条件编译,最好不要养成写宏的习惯。
[
本帖最后由 TonyDeng 于 2012-8-7 21:35 编辑 ]