#pragram once :保证头文件只被编译一次。
#pragram once 与编译器相关,有的编译器支持,有的编译器不支持。
作用与#ifndef相同,避免头文件被include多次
方式一:(语言支持,移植性更好)
#ifndef _SOURCE_FILE_H_
#define _SOURCE_FILE_H_
... //内容
#endif
方式二:(可避免宏名字冲突)
#pragram once
...//内容
方式一#ifndef有语言支持,依赖于宏名字不能冲突,这不光保证了头文件不能被重复包含多次,也保证了内容相同的两个文件不会被同时包含,缺点是,如果两个头文件的宏名字相同,可能会导致头文件明明存在,编译器却硬说找不到声明的状况。
方式二#pragram由编译器支持,同一个文件不会包含多次,这里的“同一文件”指的是物理上的两个文件,而不是内容相同的两个文件。带来的好处是,你不必再费劲想个宏名了,当然也就不会出现宏名碰撞引发的奇怪问题。对应的缺点就是如果某个头文件有多份拷贝,本方法不能保证他们不被重复包含。