2014-03-02 59 views
3

我刚刚开始阅读Unix环境下的高级编程。第一个例子是针对ls的实现,代码如下。我不明白的是DIR定义的地方。我看了apue.h(不在那里)和dirent.h(不在那里)。任何人都可以告诉我它在哪里定义?DIR定义在哪里?

#include "apue.h" 
#include <dirent.h> 
#include <stdlib.h> 

int 
main(int argc, char *argv[]) 
{ 
DIR    *dp; 
struct dirent *dirp; 

if (argc != 2) 
    err_quit("usage: ls directory_name"); 

if ((dp = opendir(argv[1])) == NULL) 
    err_sys("can't open %s", argv[1]); 
while ((dirp = readdir(dp)) != NULL) 
    printf("%s\n", dirp->d_name); 

closedir(dp); 
exit(0); 
+4

你在哪个平台上?在linux上,它在dirent.h中:'typedef struct __dirstream DIR'。你可以运行'grep DIR /usr/include/*.h /usr/include/*/*.h | grep typedef'来自己找出。 – isedev

+0

感谢您的回复。它位于我系统上的apr_portable.h – user3233706

+0

@isedev:更简单:'grep -r'typedef。* DIR'/ usr/include',或者'find/usr/include -type f -name'* .h'| xargs grep'typedef。* DIR'' –

回答

1

DIRopaque data type,你应该把它像一个,这意味着,当你只是想用它,在它的定义不偷看。

DIR自带opendir(),如果你想知道如何使用它们,只是你的终端上运行man opendiropendir()手册会告诉你

  1. 其头文件()你需要包括
  2. 什么是函数的原型
  3. 如何处理函数的返回值

以及更多。