QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 670|回复: 5

库的问题

[复制链接]
发表于 2004-3-27 22:08:15 | 显示全部楼层 |阅读模式
为什么 很多c的头文件 都会有
#ifndef     _XXX_H_
#define        _XXX_H_
(XXX是头文件的名字)
而且要大写?
为什么 库的头文件(像C的标准库STDIO.H)中的各种#define 后面的
东西总是以 _ 开头的呢?
为什么 库的头文件中 很多#define 后面只有一个东西,例如#define xxx
  xxx是什么东西呢?
难道每一库必须这样写吗?
而且 有些函数的前面也有_ 但当我们调用的时候 却没有用 _ 这个下划线,
这又是为什么呢?
还请各位高人谅解小弟我的愚笨 并且 行行好 解释一下 谢谢啦
发表于 2004-3-27 22:44:09 | 显示全部楼层
#ifndef _XXX_H_
#define _XXX_H_
是为了防止重复include 如果你include同一个文件两次 那函数可能会被错误的定义两次
XXX是啥名字其实无所谓  
大小写也无所谓 不过define一般都是大写 这是习惯
如果define的名字有下滑线 说明这个名字或者函数 是被系统使用的 其实也是习惯
回复

使用道具 举报

 楼主| 发表于 2004-3-27 23:11:25 | 显示全部楼层
谢谢斑竹
!·!!
回复

使用道具 举报

发表于 2004-3-27 23:23:45 | 显示全部楼层
在C中凡是以#到头的行都为预处理命令.也就是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。
C当中提供了多种的预处理命令,包括宏定义
[code:1]
# define PI 3.14159
[/code:1]
文件包含,[code:1]
# include <stdio.h>
[/code:1], 条件编译
[code:1]
#ifdef 标识符
...
#else
...
#endif
[/code:1]
而采用大学只是为了和变量区分,当然你完全可以是小写的字母来定义宏.
回复

使用道具 举报

 楼主| 发表于 2004-3-28 13:15:48 | 显示全部楼层
谢谢njue
回复

使用道具 举报

 楼主| 发表于 2004-3-28 13:26:27 | 显示全部楼层
还有一些小问问
njue说道:
在C中凡是以#到头的行都为预处理命令.也就是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作......
那么 像 stdio.h 中的#define  __need_FILE_ ,#define __need_NULL等等这些之前所作的工作是谁去作的呢? 谁去理解呢? 是编译器?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-8 16:44 , Processed in 0.058517 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表