Como encontrar o arquivo de cabeçalho onde uma função c é definida?

6

Existe uma maneira fácil de descobrir em qual arquivo de cabeçalho uma declaração de função C está? cd ing em /usr/include e em execução ( grep -E 'system.*\(' *.h -R ) funciona com alguma tentativa e erro, mas não há uma maneira mais fácil de fazer isso?

    
por Khaja Minhajuddin 20.02.2012 / 19:59

2 respostas

8
$ man 2 read

...

READ(2)                    Linux Programmer's Manual                   READ(2)

NAME
       read - read from a file descriptor

SYNOPSIS
       #include <unistd.h>
 ...
    
por 20.02.2012 / 20:17
1

Se você procurar nos arquivos de cabeçalho em seu sistema, você encontrará em qual arquivo de cabeçalho a função é declarada em seu sistema. Pode ser difícil, pois às vezes a função é declarada por meio de uma macro complexa. E só lhe dirá qual arquivo de cabeçalho declara a função no seu sistema; isso pode até ser um arquivo de cabeçalho que você não pode incluir diretamente porque precisa de outros cabeçalhos para vir em primeiro lugar.

A única maneira segura de encontrar qual arquivo de cabeçalho incluir é consultar a documentação da biblioteca que fornece a função. Para a biblioteca padrão, você pode consultar:

  • O padrão C ( C89 = C90 , C99 ou C11 ) define funções que estão disponíveis em todas as plataformas rodando C.
  • O padrão POSIX / Single Unix ( POSIX: 2004 , POSIX: 2008 ) define funções que estão disponíveis em cada unix como a plataforma.
  • Sua plataforma pode ter outras funções ou oferecer recursos adicionais. Consulte as man pages ( man 3 function_name ou man 2 function_name - a diferença entre 2 e 3 é amplamente histórico) ou outra documentação (por exemplo, o GNU manual do libc no Linux).
por 21.02.2012 / 01:45