2017-02-20 9 views
1

Я запускаю файл prova.c на моем терминале.
Я побежал GCC с командной строкой:Что означают эти строки из gcc?

gcc -Wall -std=c99 -E prova.c 

prova.c:

int main(int argc, char* argv[]) { 
      int a=1; 
      int b=2; 
      return a+b; 
    } 


стандартный вывод:

# 1 "prova.c" 
# 1 "<built-in>" 
# 1 "<command-line>" 
# 1 "/usr/include/stdc-predef.h" 1 3 4 
# 1 "<command-line>" 2 
# 1 "prova.c" 
int main(int argc, char* argv[]) { 
    int a=1; 
    int b=2; 
    return a+b; 
} 

Что делает каждую строку с хэш в начальное среднее?
Зачем нам нужно их генерировать?
Если у вас есть время, я хотел бы получить объяснение для каждой отдельной строки больше, чем общий ответ. Я знаю, что некоторые из них являются маркерами.
Если вы знаете ресурсы по теме, разделяющие их, это было бы замечательно.

+0

Звездочка '*'. – Filburt

+0

Спасибо, я его отредактировал –

+0

Что вы ожидали при передаче -E в gcc? –

ответ

0

Это не полный ответ, как вы предпочитаете, но он может дать вам несколько советов.

-E заданный аргумент gcc делает (link):

Стоп после стадии предварительной обработки; не запускайте собственно компилятор. Выходной сигнал выполнен в виде предварительно обработанного исходного кода, который отправляется на стандартный вывод.

Это объясняет команды # 1, которые вы получаете. Теперь вы можете перейти к документации о выходе препроцессора here. В нем говорится:

'1' Это указывает на начало нового файла.

Я не уверен в командах внутри блоков # 1.

+0

Благодарим за попытку помочь! В любом случае, вам не интересно узнать, что они точно означают? –

+0

Я. Может быть, не так сильно, как вы :) – ChronoTrigger

+0

Ну, будем надеяться, что кто-то просветит меня! –