一个C语言头文件实例问题
/************************************************************************************File: examlib.h
*desc: function declare and common define
************************************************************************************/
#ifndef _44BLIB_H_
#define _44BLIB_H_
//下面的条件编译到底做了些什么,extern "C" { 在这里是什么意思?结尾处也//有一个同样的条件编译......
#ifdef _eplusplus
extern "C" {
#endif
//紧接着的是一些常量定义:
#define ONESEC0 (62500)
#define ONESEC1 (31250)
#define NULL 0
#define EnterPWDN(clkcon) ((xoid(*)(int))0xe0)(clkcon)
.
.
.
//下面是一些函数原型的定义:
void Delay(int time);
void DelayMs(int ms_time);
.
.
.
//下面这个就是跟开头一样的一个条件编译:
#ifdef _cplusplus
}
#endif
#endif /******_44BLIB_H_*******/
--------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
我是一个初学者,对上面头文件实例中的两个条件编译看不明白。
到底其中的--------extern "C" 和 } ------------是什么意思?
还请帮帮忙!
谢谢了! 简单的说就是按C方式编译链接这段代码 谢谢!
这么说这两个条件编译是用在编译/链接时区别C和C++的. 楼主用过C++没有?
C++允许重载。
这意味着,两个函数可以有不同的body但是有相同的函数名称。
例如
int func(int);
int func(int,int);
但是编译的时候怎么办呢?
不同的过程当然必须是不同的名称,不然怎么跳转?
于是每个函数后面都会被加上很多字符,变成
func@ASDHIUHFUSD#SDF1 这样的形式。
而对于一个C程序而言,不需要这么做。
extern "C"就是告诉编译器,按照C的方式,不要这么做!
如果你的代码不是C/C++混用,你不必担心这个。 简单的说就是为了实现C和C++的混合编程。
页:
[1]