- #ifndef _HELLO_H_
-
#define _HELLO_H_
-
-
#ifdef __cplusplus
-
#define extern "C" {
-
#endif
-
-
-
//Your code
-
-
-
#ifdef __cplusplus
-
#define }
-
#endif
-
-
#endif /*_HELLO_H*/
- 外层的“#ifndef _HELLO_H_”是为了防止本文件被重复include。
- 内层的“#ifdef __cplusplus”是为了解决c 和c的名字匹配问题。
C 支持函数重载,c语言不支持函数重载。函数被c 编译后在库里面的名字与c语言不同。
假设某个函数的原型为:
void foo( int x, int y );
该函数被C编译器编译后在符号库中的名字为_foo,而C 编译器则会产生像_foo_int_int之类的名字(不同的编译器可能生成的名字不同,但是都采用了相同的机制,生成的新名字称为“mangled name”)。
_foo_int_int这样的名字包含了函数名、函数参数数量及类型信息,C 就是靠这种机制来实现函数重载的。
阅读(986) | 评论(1) | 转发(0) |