头文件引用讨论

sunnyqboy 2009-03-03 01:34:22
我看程序源码中有引用sys/signal.h也有引用signal.h。查阅了很多论坛,有的只说二者是引用不同文件夹下的头文件。这简直就是废话。
也有的说引用sys文件夹的头文件不利于移植。
我查看了一下这两个signal.h也没有发现sys下面的signal.h有很多宏定义,而include下面的signal.h就是一些函数声明,比较简单。
有谁能真正从程序的使用角度来说明这两个头文件之间的区别呢?例如:什么情况下使用类似于sys文件下的头文件,什么时候直接用include下面的头文件?
我想请问这里所谓的sys是不是/usr/include/sys/?怎么确定的?
./opt/K/SCO/Unix/5.0.6Ga/usr/include/sys/是什么意思呢?


./usr/include/sys/signal.h
./usr/include/tam/sys/signal.h
./usr/include/oldstyle/tam/sys/signal.h
./opt/K/SCO/Unix/5.0.6Ga/usr/include/sys/signal.h
./opt/K/SCO/unixds/5.1.2A/usr/include/signal.h
...全文
261 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
rzsheng 2009-03-05
  • 打赏
  • 举报
回复
学习,我没研究过。
sunnyqboy 2009-03-05
  • 打赏
  • 举报
回复
继续顶,还有高手来看看么?
独孤过儿 2009-03-03
  • 打赏
  • 举报
回复
这是我的机器里面的信息。其中内核部分忽略掉,glibc部分的忽略掉:
[root][~]# find / -name signal.h
/usr/src/linux-headers-2.6.26-1-686/include/linux/signal.h
/usr/src/linux-headers-2.6.26-1-686/include/asm-x86/signal.h
/usr/src/linux-headers-2.6.26-1-common/include/linux/signal.h
/usr/src/linux-headers-2.6.26-1-common/include/asm-x86/signal.h
/usr/src/linux-headers-2.6.26-1-common/include/asm-generic/signal.h
/usr/src/glibc/glibc-2.7/signal/sys/signal.h
/usr/src/glibc/glibc-2.7/signal/signal.h
/usr/src/glibc/glibc-2.7/hurd/hurd/signal.h
/usr/src/glibc/glibc-2.7/include/sys/signal.h
/usr/src/glibc/glibc-2.7/include/signal.h
/usr/include/sys/signal.h
/usr/include/linux/signal.h
/usr/include/asm/signal.h
/usr/include/signal.h
/usr/include/asm-generic/signal.h
[root][~]# vim /usr/include/sys/signal.h
[root][~]# vim /usr/include/linux/signal.h
[root][~]# vim /usr/include/signal.h
[root][~]# cat /usr/include/sys/signal.h
#include <signal.h>
[root][~]# cat /usr/include/linux/signal.h
#ifndef _LINUX_SIGNAL_H
#define _LINUX_SIGNAL_H

#include <asm/signal.h>
#include <asm/siginfo.h>


#endif /* _LINUX_SIGNAL_H */
[root][~]#
/usr/include/sys/和/usr/linux/linux/这两个目录下一般是操作系统提供的一级的文件所在,而inclucde下还

有应用程序级别的文件所在,比如下面的X11目录,就是图形界面编程的一些头文件。

你看我上面cat的内容,实际上系统级别的大多数的时候,都和应用程序级别的文件内容相同。
tanchanghe 2009-03-03
  • 打赏
  • 举报
回复
一般都是一样的
fox000002 2009-03-03
  • 打赏
  • 举报
回复
看了一下机器上 linux 的情况, sys/signal.h 里只有一句 #include <signal.h>

那就等同于是一个文件

其他平台会有不同,还是仔细比较一下两个文件有什么不同先
  • 打赏
  • 举报
回复
区别还真没研究过..
帮顶,等高手.
内容概要:本文详细介绍了C++头文件的概念、作用、分类及使用方法。首先解释了头文件的基本概念,即通过.h或.hpp扩展名的文件包含函数声明、类定义等内容,通过#include指令被其他源文件引用,实现代码复用和模块化。头文件的主要作用包括提供函数和类的声明、提高代码复用性、增强程序的模块化和可维护性。文章还分类介绍了标准库头文件(如)和自定义头文件的创建与使用。接着阐述了头文件的使用方法,包括#include指令的使用、防止头文件重复包含的方法(如#ifndef/#endif、#pragma once)以及合理的头文件包含顺序。最后讨论了常见的头文件使用问题及解决方案,如头文件路径错误、重复定义问题和循环包含问题,并提供了相应的解决措施。 适合人群:具有一定C++编程基础的开发者,尤其是初学者和中级开发者。 使用场景及目标:①帮助开发者理解头文件在C++编程中的重要性;②指导开发者如何正确创建和使用头文件,避免常见错误;③提升代码的复用性、模块化和可维护性。 其他说明:本文不仅讲解了理论知识,还结合了大量实例代码,使读者能够更好地理解和实践头文件的使用技巧。通过学习本文,读者可以提高编程效率,编写出结构清晰、易于维护的C++程序。此外,文章还鼓励读者通过阅读优秀开源项目代码来进一步提升对头文件的理解和应用水平。

23,223

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧