Chinaunix首页 | 论坛 | 博客
  • 博客访问: 368927
  • 博文数量: 100
  • 博客积分: 2500
  • 博客等级: 大尉
  • 技术积分: 1209
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-15 21:24
文章分类

全部博文(100)

文章存档

2011年(100)

分类: C/C++

2011-04-17 17:07:01


  1. #ifndef _HELLO_H_
  2. #define _HELLO_H_

  3. #ifdef __cplusplus
  4. #define extern "C" {
  5. #endif


  6. //Your code


  7. #ifdef __cplusplus
  8. #define }
  9. #endif

  10. #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 就是靠这种机制来实现函数重载的。



阅读(981) | 评论(1) | 转发(0) |
0

上一篇:交换两个值

下一篇:插入排序

给主人留下些什么吧!~~

onezeroone2011-04-24 16:30:09

名字匹配