免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3902 | 回复: 6
打印 上一主题 下一主题

关于头文件的内容 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-01-22 22:58 |只看该作者 |倒序浏览
我知道头文件由三部分内容组成:

(1)头文件开头处的版权和版本声明。

(2)预处理块。

(3)函数和类结构声明等。

下面是我引用的turboc2.0的头文件。第一部分我已清楚。第二部分和第三部分混在一起了,其中有些部分和标号我不太清楚:

如:

#if __STDC__
#define _Cdecl
#else
#define _Cdecl        cdecl
#endif
这部分是干什么用的?

还有

int        _Cdecl brk        (void *addr);
void        *_Cdecl calloc        (size_t nitems, size_t size);

中的  _Cdecl 和 *_Cdecl是干什么用的?


下面是引用的头文件。

*******第一部分********
/*        alloc.h

        memory management functions and variables.

        Copyright (c) Borland International 1987,1988
        All Rights Reserved.
*/

*******第二部分和第三部分********

#if __STDC__
#define _Cdecl
#else
#define _Cdecl        cdecl
#endif

#ifndef _STDDEF
#define _STDDEF
#ifndef _PTRDIFF_T
#define _PTRDIFF_T
#if        defined(__LARGE__) || defined(__HUGE__) || defined(__COMPACT__)
typedef long        ptrdiff_t;
#else
typedef int        ptrdiff_t;
#endif
#endif
#ifndef _SIZE_T
#define _SIZE_T
typedef unsigned size_t;
#endif
#endif

#ifndef NULL
#if defined(__TINY__) || defined(__SMALL__) || defined(__MEDIUM__)
#define NULL        0
#else
#define NULL        0L
#endif
#endif

int        _Cdecl brk        (void *addr);
void        *_Cdecl calloc        (size_t nitems, size_t size);

#if defined(__COMPACT__) || defined(__LARGE__) || defined(__HUGE__)
unsigned long _Cdecl coreleft        (void);
#else
unsigned _Cdecl coreleft        (void);
#endif

void         _Cdecl free        (void *block);
void        *_Cdecl malloc        (size_t size);
void        *_Cdecl realloc        (void *block, size_t size);
void        *_Cdecl sbrk        (int incr);

#if !__STDC__
void far  * _Cdecl farcalloc        (unsigned long nunits, unsigned long unitsz);
unsigned long _Cdecl farcoreleft(void);
void _Cdecl      farfree        (void far *block);
void far  *_Cdecl farmalloc        (unsigned long nbytes);
void far  *_Cdecl farrealloc        (void far *oldblock, unsigned long nbytes);
#endif

论坛徽章:
0
2 [报告]
发表于 2003-01-23 09:14 |只看该作者

关于头文件的内容

在我的印象里面.h文件和.cpp文件都是人们定义的一个非强制性规范,可以将声明和实现代码分开。

但是这一切都不是必须的,例如STL的所有的定义和实现代码都是在.h中的。我觉得这个全在个人对于实现的理解。如果一个很小(代码很少)的模块,还有分为两个文件的话,我觉得有些浪费。

论坛徽章:
0
3 [报告]
发表于 2003-01-23 10:18 |只看该作者

关于头文件的内容

在c++中
如果是使用nline 的话
那么函数定义要在.h中

另外使用头文件的话
那么改一个函数的声明比较方便
不用一个一个.c的改


当然你也可以不用

论坛徽章:
0
4 [报告]
发表于 2003-01-31 21:03 |只看该作者

关于头文件的内容

谢谢各位,不过我的问题还没有回答。

论坛徽章:
0
5 [报告]
发表于 2003-02-02 23:45 |只看该作者

关于头文件的内容

有些是系统定的所以不明白!
慢慢看吧!

论坛徽章:
0
6 [报告]
发表于 2003-02-04 21:24 |只看该作者

关于头文件的内容

告诉编译器后面的函数或变量的名称变换方式。
编译后生成的obj文件中你的变量和函数名称实际上和你输入的
不一样C中要在你的函数前加上个下划线。如果你想知道详细的
情况请提出来我给你解释。
Cdecl 是老的标记,新的是cdecl。
表明后面的名称使用规则,大小写敏感前面加下划线。

borland C++中的完整解释如下。
-----------------------------------------------------------------------------
Declares as C-style

Syntax:
    cdecl <data definition>; ;
    cdecl <function definition>; ;
    _cdecl <data definition>; ;
    _cdecl <function definition>; ;
    __cdecl <data definition>; ;
    __cdecl <function definition>; ;

Declares a variable or a function using a C-style naming convention
(case-sensitive, with a leading underscore appended).

In addition, cdecl declares C-style parameter passing conventions when
applied to a function header (last parameter pushed first, and the caller
cleans up the stack).

  Example:
   int cdecl FileCount;
   far cdecl HisFunc(int x);

论坛徽章:
0
7 [报告]
发表于 2003-02-17 10:43 |只看该作者

关于头文件的内容

先谢了。怕老大看不到这封帖子,还发了封站内短信。
我想问一下你所提到的内容在哪可以找得到?我是自学的,有些问题颇感迷茫。
有没有此类详细的说明材料?英文的也可以。请发给我。wykrever@163.com


wykrever |wykr3879都是我,因为当时申请了一个号出问题,所以又申请了一个。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP