Estou examinando algumas anotações do curso C, e cada arquivo fonte do programa C começa com um único #
na primeira linha do programa.
Depois, há linhas em branco e outras coisas seguidas pela main
função.
Qual é a razão para o #
?
(Está fora de prazo agora e não posso realmente perguntar ao sujeito.)
Aqui está um exemplo:
#
#include <stdio.h>
int main() {
printf("Hello, World!");
return 0;
}
c
c-preprocessor
O Homem Principal
fonte
fonte
#
uma linha em branco e o programa.#
é a ofuscação. Se você quiser confundir todos, você pode, por exemplo, iniciar todos os seus arquivos de origem com a linha#//#BEGIN#\\#
(que não faz absolutamente nada).Respostas:
Uau, esta exigência vai caminho de volta à década de 1970.
Nos primórdios do C pré-padronizado, se você desejava chamar o pré - processador , era necessário escrever a
#
como a primeira coisa na primeira linha de um arquivo de origem. Escrever apenas um#
na parte superior do arquivo oferece flexibilidade no posicionamento das outras diretivas do pré-processador.De um rascunho C original do grande Dennis Ritchie :
Esse documento faz uma ótima leitura (e me permitiu pular essa questão como um gato louco).
Suspeito que o palestrante seja simplesmente sentimental - não é exigido desde ANSI C.
fonte
#
em uma linha por si só, apenas que comece com um#
, então por que não ir diretamente para um#include
? Ou estou entendendo errado?Faz nada
A partir do padrão ISO de C / C ++:
Portanto, nos compiladores de hoje, esse hash vazio não faz nada (como -
new-line ;
não tem funcionalidade).PS : No C pré-padronizado ,
# new-line
tinha um papel importante, era usado para invocar o pré-processador C (como apontado por @Bathsheba). Portanto, o código aqui foi escrito dentro desse período ou veio do hábito.fonte
Você precisa saber sobre o processo de compilação de C. Como é "preciso saber" como o código-fonte é convertido em código binário executável (arquivo).
No processo de compilação, o código-fonte C deve atravessar a seção do pré-processador. Mas como dizer ao compilador para pré-processar o código? ... Que o símbolo de tempo # foi introduzido no indicador de pré-processamento para o compilador.
Por exemplo
#define PI 3.141
está no código fonte. Então será alterado após a sessão de pré-processamento. Significa que todo o PI será alterado para 3.141.Assim
#include <stdio.h>
, as funções de E / S padrão serão adicionadas ao seu código-fonte.Se você possui uma máquina Linux, compile como
gcc -save-temps source_code.c
. E veja as saídas do compilador.fonte