如何查看C头文件的源代码?

时间:2016-10-13 17:00:49

标签: c++ c bash header-files

我想看一些函数和结构的规范。在我经历的教程中,它说

see the gdk/gdkkeysyms.h header file for a complete list of GDK key codes.

我记得我曾经(偶然)为 math.h 打开了文件,但我已经用

查找了它们
find -name 
find -wholename
Bash中的命令和避风港能够解决我的问题。

2 个答案:

答案 0 :(得分:3)

如果您使用的是安装了gcc的系统,则可以使用附带的C预处理器打印出所有包含文件的完整路径。当然,假设您安装了头文件,gcc可以找到它。

对于简单的系统头文件,您可以轻松地提取路径:

$ cpp -H -o /dev/null - <<<'#include <sys/time.h>' |&head -n1
. /usr/include/x86_64-linux-gnu/sys/time.h

注1 |&head -n1只会打印输出的第一行 - 定向到stderr。完整输出包含整个包含树,其中的点表示包含深度。

注2 :以上假设您使用的是C.如果标头是C ++,则需要使用cpp标志告诉-x

$ cpp -H -o /dev/null -x c++ - <<<'#include <vector>' |&head -n1
. /usr/include/c++/5/vector

对于头文件需要-I选项的库,您可以尝试使用pkg-config查找正确的编译器选项(假设您知道正确的包名称):

$ cpp -H -o /dev/null $(pkg-config --cflags gdk-2.0) - <<<'#include <gdk/gdkkeysyms.h>'|&head -n1
. /usr/include/gtk-2.0/gdk/gdkkeysyms.h

要在我的系统上查找软件包名称,我查询了pkg-config本身,然后猜到了哪一个是:

$ pkg-config --list-all | grep gdk
gdk-pixbuf-2.0                 GdkPixbuf - Image loading and scaling
gdk-2.0                        GDK - GTK+ Drawing Kit (x11 target)
gdk-pixbuf-xlib-2.0            GdkPixbuf Xlib - GdkPixbuf rendering for Xlib
gdk-x11-2.0                    GDK - GTK+ Drawing Kit (x11 target)

答案 1 :(得分:2)

您只需使用命令:

find /usr/include -name gdkkeysyms.h

在你的bash中。 Unix系统资源(usr/usr/localopt下的include文件夹取决于它的安装方式)目录包含您可能需要的所有目录。每当您想查看源代码时,请尝试使用此语法:

find /usr/include -name header_name.h

参考

How to view source code of header file in C++?

注意(对于C ++):

  

C ++标题位于/usr/include/c++