1.#if 0
......
#endif
既然后面条件都为假,为什么不干脆注释掉呢?是不是为了以后好扩充?
2.#ifndef _LANG_
#define _LANG_(放在头文件的最上面)
但在后面却没有用到_LANG_这个宏,不知道这个预编译有什么用?
......
#endif
既然后面条件都为假,为什么不干脆注释掉呢?是不是为了以后好扩充?
2.#ifndef _LANG_
#define _LANG_(放在头文件的最上面)
但在后面却没有用到_LANG_这个宏,不知道这个预编译有什么用?
#define _LANG_(放在头文件的最上面)这个是在多次include用一个h文件的时候,避免多次编译这个h文件的内容,因为多次编译会导致符号的重定义。
在其它文件中也没用到,整个项目中都没用到,而且这种定义不止一处,有很多处这种定义的宏都没用到。
#define _LANG_class A
{
};#endif#ifndef _LANG_
#define _LANG_class A
{
};#endifinclude第二次的时候,_LANG_已经定义了,所以#ifndef不成立,所以就不会再编译了,也避免了class A定义两次的问题。定义_LANG_的唯一目的是为了防止多次编译,不会用到的,你可以看vc自动生成的h文件,这个宏的名字都很长,就是为了避免你用到这个名字。
1。比如说你写了不一大堆代码,后来用户改变了要求,你怎么办?是用/* */封起来呢还是用// // //封起来?如果是用/* */封的话这段代码里面也有/* */怎么办?如果用// // //封,代码有N多行,不是太累吗?直接删掉?以后要用怎么办?
所以 #if 0
#endif
的作用相当于注释掉这段代码,告诉编译器不要编译这段代码。
2。 stonespace(stonespace)已经说的很清楚了。