2013-03-28 11 views
5

Za pomocą tej opcji otrzymuję pliki po wstępnym przetworzeniu. Istnieje wiele linii takich jak:g ++ -E wyjście opcji

# 91 "/usr/include/stdint.h" 3 4 

Co oznaczają liczby? Najpierw pomyślałem, że #91 to numer linii, w której znajduje się plik, ale to nie jest to. I o 3 4 Nie mam pojęcia w ogóle.

Odpowiedz

8

Według the official documentation, linia jest w formacie:

# linenum filename flags 

linenum określa, że ​​następujący wiersz pochodzi filename na tym numerze linii. Następnie istnieją cztery flagi:

  • 1 - początek nowego pliku
  • 2 - Wracając do pliku
  • 3 - plik nagłówka systemu
  • 4 - Traktować jako zawinięte w extern "C"

Zinterpretujmy zatem Twój znak linku:

# 91 "/usr/include/stdint.h" 3 4 

Następująca linia pochodzi z linii 91 z /usr/include/stdint.h. Jest to plik nagłówkowy systemu i powinien być traktowany jako zawinięty w extern "C".

1

Są flagi (oddzielonych spacjami), a ich znaczenie jest:

1 - Start of a new file 
2 - Returning to previous file 
3 - Following text comes from a system header file (#include <> vs #include "") 
4 - Following text should be treated as being wrapped in an implicit extern "C" block. 
5

Są to tak zwane "markery linii". Z documentation:

nazwa pliku źródłowego i numer linii informacji jest przenoszony przez linie formie

# linenum filename flags 

te nazywane są linemarkers. Są one wstawiane w miarę potrzeby do wyjścia (ale nigdy w ciągu znaków lub stałej znaku). Znaczy to, że następująca linia pochodzi z pliku filename pod linkiem linenum. filename nigdy nie będzie zawierał żadnych niedrukowalnych znaków; zastępuje się je ósemkowymi sekwencjami ucieczkowymi.

Po nazwie pliku pojawia się zero lub więcej flag, które są ‘1’, ‘2’, ‘3’ lub ‘4’. Jeśli istnieje wiele flag, spacje je rozdzielają. Oto co znaczy flagi:

  • ‘1’ - Oznacza to początek nowego pliku.
  • ‘2’ - Oznacza to powrót do pliku (po dołączeniu innego pliku).
  • ‘3’ - Wskazuje, że następujący tekst pochodzi z pliku nagłówkowego systemu, więc niektóre ostrzeżenia powinny zostać wyłączone.
  • - Wskazuje, że poniższy tekst powinien być traktowany jako zawinięty w domyślny blok extern "C".
Powiązane problemy