| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 1158 人关注过本帖
标题:系统头文件和自定义头文件
收藏  订阅  推荐  打印 
zhangfuhua
Rank: 2
等级:注册会员
帖子:70
积分:884
注册:2006-7-1
系统头文件和自定义头文件

我在一本书上看到的
如果在一个源文件里同时包含自己的头文件和系统的头文件,一般吧包含系统的头文件的命令写在前面
这样做的目的主要是为了防止本程序的局部定义影响到库文件里的定义。

请问是怎么影响的?
搜索更多相关主题的帖子: 头文件  定义  系统  局部  命令  
2008-1-12 15:38
linsua
Rank: 3Rank: 3
等级:中级会员
帖子:275
积分:3186
注册:2008-1-2

比方你#define NULL 1的话

如果你对我的话感到再明白不过 那恐怕你是误解了我的意思
2008-1-12 16:03
zbqf109
Rank: 3Rank: 3
等级:中级会员
帖子:289
积分:3134
注册:2006-12-31

我给你举个简单的例子,实际里面会复杂的多。
加入你的my.h是这样的:
程序代码:
#ifndef  _MY_H_
#define  _MY_H_
// some code here
#define  _STDIO_H_
#endif
然后在你的my.c中这样写:
程序代码:
#include "my.h"
#include <stdio.h>

int main(int argc,  char *argv[])
{
     printf("Hello,  World.\n");
     return  0;
}
这个时候编译器会给一个警告:
my.c: In function `main':
my.c:6: warning: implicit declaration of function `printf'

printf成了隐式定义的了。至于为什么变成隐式的,这里没必要说清楚。你只需知道一点:my.h里面的#define _STDIO_H已经影响了包含的<stdio.h>. 如果你这样包含头文件就不会有警告:
程序代码:
#include <stdio.h>
#include "my.h"

坚决不跟用TC的人打交道!
2008-1-12 16:07
sunkaidong
Rank: 12Rank: 12Rank: 12
来自:南京师范大学
等级:版主
威望:4
帖子:4128
积分:44851
注册:2006-12-28

楼上说的第一次听说,学到东西了,呵呵
2008-1-12 16:10
zhangfuhua
Rank: 2
等级:注册会员
帖子:70
积分:884
注册:2006-7-1

MS明白了
谢谢
2008-1-14 13:04
xinghualiwei
Rank: 1
等级:新手上路
帖子:5
积分:150
注册:2008-1-14

一直只知道应该这样,
今天终于知道为什么这样了,
2008-1-14 16:41
永夜的极光
Rank: 12Rank: 12Rank: 12
等级:版主
威望:17
帖子:2666
积分:34005
注册:2007-10-9

原帖由 [bold][underline]zbqf109[/underline][/bold] 于 2008-1-12 16:07 发表 [url=http://bbs.bccn.net/redirect.php?goto=findpost&pid=1179050&ptid=197202][/url]
我给你举个简单的例子,实际里面会复杂的多。
加入你的my.h是这样的:#ifndef  _MY_H_
#define  _MY_H_
// some code here
#define  _STDIO_H_
#endif然后在你的my.c中这样写:#include "my.h"
#include

int main(int ar ...
能不能说一下其它复杂的原因呢,
我个人觉得,一般人不会去定义_STDIO_H_这种类型的宏
象上面的#define NULL倒是有点可能,不过我一般也用#ifdef先判断一下的

从BFS(Breadth First Study)到DFS(Depth First Study)
学习VIM中,欢迎访问我的blog  http://hi.baidu.com/newkedison
严重鄙视一切把论坛当成作业生成器和人肉搜索引擎的人
2008-1-14 17:18
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.048315 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved