O processo de compilação e o tipo de dados (a)

O processo de compilação e o tipo de dados (a)


1. g ++ compilação processo

Aqui Insert Picture Descrição

1.1 Pré-tratamento

  • arquivos gerados: xxx.c gerado pelo xxx.i (fonte) (arquivo pré-processado).

  • Ferramentas: pré-processador (compilador GCC incluído no conjunto de ferramentas).

  • Gerando o comando: gcc -E xxx.c -o xxx.i pré-processamento de parâmetros é que -E

  • papel:

    • Expandir o arquivo de cabeçalho

      • Expandir stdio.h, arquivos de cabeçalho stdlib.h e outros conteúdos, e o conteúdo específico e expandir juntos outra fonte, é armazenado no arquivo xxx.i. (#Include <stdio.h> Estes comandos pré-tratamento pré-tratamento não existe na xxx.i arquivo, ele foi substituído por um conteúdo específico)
      • Este processo não é responsável por verificar o erro de sintaxe, um erro de sintaxe está no processo de compilação. Então, se o primeiro documento escrito qualquer coisa pode ser, não importa qual o formato do sufixo arquivo de cabeçalho pode ser, e pode ser implantado em outra fonte de xxx.i.

      Você pode testar: Escreva um nome para o arquivo de cabeçalho 111.txt, basta escrever o que está dentro. Escreva um nome de arquivo para o text.c fonte, em que o cabeçalho usando 111.txt, a saber: #include <111.txt>. Os arquivos de inclusão e de código em um diretório e, em seguida, executar gcc -E text.c -o text.i -I. Este comando pode ser visto no arquivo text.i gerado, esse arquivo de cabeçalho de gravação aleatória , também foi lançado e os outros códigos restantes juntos de qualquer maneira. (Este último comando adiciona a == - I ==, respectivamente, traços letras maiúsculas i, períodos, o papel é um cabeçalho arquivos fonte usados ​​no mesmo diretório, caso contrário, sem este -I .. se você não pode encontrar os arquivos).

    • Substituir definição de macro

      • Irá substituir o valor do nome macro macro.
      • Tais como: o arquivo de origem tem #define PI 3.14, e usa os códigos PI abaixo, em seguida, transformados em um arquivo que o pré-tratamento xxx.i, #define PI 3.14desaparecem simultaneamente, todos os códigos da mais baixos tornaram-se PI 3,14.
    • Substitua comentários

      • De linha única, comentário multi-linha será substituída por uma linha em branco na xxx.i.
    • Expanda a compilação condicional

      • As condições para expandir o código.
      • Tais como: a presença de código a seguir, #ifdef PIo Código é uma condição, se você definir PI, vai colocar o código printf("PI has been defined.");em xxx.i que, ao mesmo tempo #ifdef PIe #endifdesaparecer. Se você não definir PI antes de então #ifdef PIe printf("PI has been defined.");, e #endifesta peça não serão mais exibidos xxx.i.
      #include<stdio.h>
      #define PI 3.14
      
      int main(void)
      {
          #ifdef PI
              printf("PI has been defined.");
          #endif
          return 0;
      }
      

1,2 compilador

  • arquivos gerados: xxx.s (geradores de arquivo compilado) por um xxx.i (arquivo pré-processado).
  • Ferramentas: Compiler (compilador GCC incluído no conjunto de ferramentas).
  • Gerando comando: gcc -S xxx.i -o xxx.s que é compilada parâmetro -S
  • papel:
    • erros progressiva sintaxe verificação, que está entre o compilador gcc quatro passos o mais importante e demorada.
    • O programa C traduzidos em instruções de montagem, obter .S arquivos de montagem.

1.3 Compilação

  • O ficheiro resultante: gerado por xxx.s (conjunto de arquivo) xxx.o (o ficheiro de destino). arquivos objeto são linguagem de máquina binária, os seres humanos não podem ler. (Note, porém, é um arquivo binário, mas não aberto após estes 101010, 101010 porque vemos é uma série de cordas, não reconhecida pelo computador 101010).
  • Ferramentas: Assembler (compilador GCC incluído no conjunto de ferramentas).
  • Gerando comando: gcc -c xxx.s -o xxx.o em que o parâmetro é uma -c compilação
  • papel:
    • Tradução: As instruções assembler traduzido num correspondentes instruções binárias.

1.4 Ligações

  • arquivos gerados: gerar xxx.exe (arquivo executável) pela xxx.o (o arquivo de destino). ficheiros executáveis ​​são linguagem de máquina binária, os seres humanos não podem ler.
  • Ferramentas: ligador (compilador gcc está incluída no conjunto de ferramentas).
  • Gerando comando: gcc xxx.o -o xxx.exe há parâmetros de ligação
  • papel:
    • Biblioteca é introduzido: a introdução de bibliotecas, tais como: printf biblioteca, sistema, scanf como função.
    • Combine vários arquivos objeto
    • A rotina de inicialização combinado (rotina é chamada a função principal)

1.5 Resumo

  • O processo acima pode referir-se o seguinte:

Aqui Insert Picture Descrição

  • O processo acima descrito não tem que ir passo a passo, que pode ser transformado directamente a partir de um lado frontal a quaisquer instruções para qualquer uma atrás, tais como:
    • Pode ser alterado a partir xxx.c xxx.i (instrução gcc -E xxx.c -o xxx.i),
    • Pode tornar-se xxx.s de xxx.c (instrução gcc -S xxx.c -o xxx.s),
    • Xxx.c pode tornar-se xxx.o (instrução gcc -c xxx.c -o xxx.o),
    • Xxx.c pode tornar-se xxx.exe (instrução gcc xxx.c -o xxx.exe),
    • Pode tornar-se xxx.s de xxx.i (instrução gcc -S xxx.i -o xxx.s),
    • Xxx.i pode tornar-se xxx.o (instrução gcc -c xxx.i -o xxx.o),
    • Xxx.i pode tornar-se xxx.exe (instrução gcc xxx.i -o xxx.exe),
    • E assim por diante (exemplificado na FIG parte inferior) ...
      Aqui Insert Picture Descrição

2. função principal

2.1 função principal em duas formas convencionais

  • Não há argumentos:int main(void) {return 0;}

  • Há argumentos:int main (int argc, char *argv[]) {return 0;}

    (其中*argv[]可以写成**argv[])

2.2 função principal outras formas

  • int main()

  • void main()

  • int main(int c)

  • main()

  • main(int c)

  • Etc. Outros ... embora estes não são a forma padrão, mas o compilador pode aceitar.


3. depuração

  • Depuração é usado para encontrar erro de lógica ocorreu no programa, não há erros gramaticais! O editor não é coisa errada.

  • A idéia central: deixar a linha de programa de execução da linha.

  • Linha Número: Ferramentas - Opções - Editor de Texto - c / c ++ - número da linha (cheque).

  • processo de depuração :

    • Adicionando pontos de interrupção: um ou mais

      1. Um método: Esquerda-clique no ponto de interrupção que você deseja adicionar esta linha para o lado esquerdo da área cinzenta, clique novamente para cancelar.

      2. Método dois: o cursor do mouse pára em um ponto de interrupção em qualquer lugar que você deseja adicionar esta linha, prima F9 para adicionar, pressione F9 novamente desaparecer.

    • Debug: debug deve estar no modo de depuração, o modo de lançamento não pode ser.

    • F5 para iniciar a depuração (diferentes atalhos de software pode ser diferente, pode ser visto na barra de ferramentas acima).

    • O programa pode ser executado antes do intervalo, o primeiro ponto de ruptura após o programa não é executado.

    • modo de depuração:

      1 ** - by-instrução é executada. ** teclas de atalho F11, uma por uma declaração para a próxima linha, que cumpre função para a função (consulte a função personalizada), a função continua a executar instruções de um por um, após a função terminar fora da função de rastreamento para continuar uma execução por um.

      2 ** pelo processo de implementação. ** teclas de atalho F10, um a um processo para a próxima linha, a função se encontram, não entram na função interna, continuar a acompanhar uma por uma execução.

      3. execução por pontos de interrupção. Quando existem vários pontos de interrupção no código, clique na barra de ferramentas acima do "Continuar" saltar diretamente para o próximo ponto de interrupção, há atalhos.

      4. função de rejeição: shift + 10, pode estar fora de uma função do ponto de interrupção de corrente. (Porção não executada da executa a função descartáveis)

Aqui Insert Picture Descrição


4. Variable

Três elementos da variável 4.1

  • tipos de variáveis: número inteiro, verdadeiro, caráter, etc, para abrir o tamanho variável do espaço de memória.
  • nomes de variáveis: para uso no programa.
  • Os valores das variáveis: os dados reais armazenados na variável.

4.2 Definição Variável

  • Define a sintaxe: Nome do nome da variável type = valor da variável. Tais como:int a = 10;
  • variável definida, a memória vai abrir um espaço correspondente à variável, mas a declaração de variável não abre espaço na memória.

4.3 Declaração de variáveis

  • sintaxe:
    • Método um: int a;variável não define o valor da variável, isto é, declarações de variáveis.
    • Método dois: extern int a;Use a palavra-chave extern declarou.
  • Características:
    • Se você quiser usar uma variável, você deve primeiro definir ele.
    • O compilador antes de usar aparência variável para a frente, a definição, se não for definido, o compilador irá localizar automaticamente a declaração de variável, ele foi promovido para a definição.
    • Por um lado, se é declarado com extern, não pode ascender.

5. constante

Constantes não são alteradas e não serão modificados dados. Há cerca de três maneiras:

  • "Olá" é uma constante de cadeia, 'a' é uma constante de caracteres, 25 é um número inteiro constante, verdadeira constante é 63,335.
  • Usando definir definições de macro (o mais comum), sintaxe: #define 宏名 宏值. Por exemplo:#define PI 3.14
    • Note que o nome da macro e os valores intermediários macro não sinal de igual, não há fim de uma frase símbolos
  • Utilizar a palavra-chave const, sintaxe: const nome da variável nome type = valor variável, tais como:const int a = 1;
    • uma variável poderia ter sido, mas após a modificação palavra-chave const, torna-se uma variável de somente leitura.

6. Identificação

  • Nome da variável e o nome genérico da denominação constante.

6.1 requisito obrigatório

  • Identificados por letras, números, sublinhado composição (_).
  • Palavras-chave e identificadores não pode ser um nome de função, como principal, sistema, retorno, flutuar etc. não pode.
  • Identificador não pode começar com os números, letras e pode começar com um sublinhado.
  • maiúsculas e minúsculas:
    • Geralmente usar letras maiúsculas para representar constantes, tais como:#define MAX 200
    • Normalmente utilizar letras minúsculas para a variável, tais como:int a = 10;

convenção de nomenclatura 6.2

  • Grande corcunda Método: int HelloWorldHahaHohoHehe = 10;

    • nomes de variáveis ​​de várias palavras, capitalizar a primeira letra de cada palavra.
  • Pequena corcunda Método: int helloWorldHahaHohoHehe = 10;

    • -Multiple palavra nomes de variáveis, a primeira letra da primeira palavra em letras minúsculas, eo resto de cada palavra em maiúsculas.
  • + Minúsculas sublinhado: hello_world_haha_hoho_hehe int = 10;

    • especial linguagem C!

7. sizeof palavra-chave

  • sizeof não é uma função, ele é a palavra-chave.
  • Utilizada para obter o tipo de dados, variável com o tamanho do espaço de memória.
  • Como usar:
    • sizeof (nome da variável) devolve um tamanho variável, em bytes.
    • sizeof (tipo de dados) Retorna o tamanho do espaço de memória ocupado pelo tipo de dados, em bytes.
    • variável suporte ao idioma nome C sintaxe sizeof de redacção, não comumente usados.

8. função printf

  • função printf é formatado de saída.
  • A forma geral é:printf("格式匹配符", 输出表列);

formato 8,1 equiparador d

situação comum é %d %md %-md %ld %lld %hd

  • %dEla representa o número real de saída de bits de dados de números inteiros.
  • %mdIndica bits de dados de saída, se m é inferior ao número real de bits de dados, o número real de bits de acordo com a saída de dados, se m for maior do que o número actual de bits de dados, o resultado de m-bit de saída justificado direita, preenchido com espaços deixados.
  • %-mdQuando m é maior do que quando o número real de bits representado pelos dados, a saída de m-bit, o resultado justificada à esquerda, à direita acolchoado com espaços.
  • %ldLetra L representa inteiro longo. As modificações podem ser adicionados m, n, menos semelhante, as regras acima.
  • %lldLetters vai para inteiros longos longos. As modificações podem ser adicionados m, n, menos semelhante, as regras acima.
  • %hdNa carta h representa um inteiro curto. As modificações podem ser adicionados m, n, menos semelhante, as regras acima.
#include <stdio.h>
int main(void)
{
    int a = 222, m = 555;
    short int b = 3;
    long int c = 4;
    long long int d = 5;
    
    printf("%d\n",a);
    printf("%4d,%2d\n",a,a);
    printf("%4d,%-4d\n",a,a);
    printf("%04d,%4d\n",a,a);
    printf("%d + %d = %d\n",a, m, a+m);
    
    printf("%hd",b);
    printf("%ld",c);
    printf("%lld",d);
    
    return 0;
}

Aqui Insert Picture Descrição

formato 8.2 correspondência f

  • forma comum de:%f %m.nf %-m.nf %mf %.nf
  • %fÉ o comprimento real real dos dados de saída.
  • %-m.nfM é um inteiro positivo que representa largura de dados, que compreende uma parte fraccionaria, a parte inteira e um ponto decimal; n é um inteiro positivo que representa o número de casas decimais.
#include <stdio.h>
int main(void)
{
    float a = 3.1425;
    printf("%f\n",a);
    printf("%5.2f\n",a);
    printf("%.2f\n",a);
    printf("%-5.2f\n",a);
    printf("%7.3f\n",a);
    printf("%f\n",a);
    printf("%4.8f\n",a);
    
    return 0;
}

Aqui Insert Picture Descrição

formato de correspondência 8.3 Character

  • As formas mais comuns% c, gera um personagem.
#include<stdio.h>
int main(void)
{
    char c = 'A';
    printf("%c",c);
    return 0;
}

formato da cadeia de correspondência 8.4

  • As formas mais comuns %s和%m.ns. m representa um comprimento de cadeia de saída permite que, n é o número de caracteres da cadeia de caracteres representa tomada.
#include<stdio.h>
int main(void)
{
    printf("%s\n","ABCDEFGHI");
    printf("%3.2s\n","ABCDEFGHI");
    printf("%-3s,%3s\n","ABCDEFGHI","ABCDEFGHI");
    printf("%-.2s\n","ABCDEFGHI");
    printf("%12.2s,%-12.2s\n","ABCDEFGHI","ABCDEFGHI"); 
    printf("%12s,%-12s\n","ABCDEFGHI","ABCDEFGHI");
    
    return 0;
}

Aqui Insert Picture Descrição


9. inteiro

Obtendo o valor mínimo do valor máximo quando o tipo de dados, requer o uso de arquivos de cabeçalho#include<limits.h>

9.1 inteiro Assinado

nome formulário matcher Format tamanho pegada mínimo máximo
inteiro curto curta (int) % hd 2 bytes -32768 32767
número inteiro int % d 4 bytes -2147483648 2147483647
inteiro longo longa (int) % ld sistema de janelas 32 e 64 é de 4 bytes; o sistema Linux, 32 é de 4 bytes, 8 bytes 64 -2147483648 2147483647
inteiro longo longo longo (int) % LLD 8 bytes -9223372036854775808 9223372036854775807
#include <stdio.h>
#include <limits.h>

int main(void)
{
    printf("short的大小为:%d个字节\n",sizeof(short));
    printf("short的最小值是:%hd,最大值是:%hd\n",SHRT_MIN,SHRT_MAX);
    
    printf("int的大小为:%d个字\n",sizeof(int));
    printf("int的最小值是:%d,最大值是:%d\n",INT_MIX,INT_MAX);
    
    printf("long的大小为:%d个字节\n",sizeof(long));
    printf("long的最小值是:%ld,最大值是:%ld\n",LONG_MIN,LONG_MAX);
    
    printf("long long的大小为:%d个字节\n",sizeof(long long));
    printf("long long的最小值是:%lld,最大值是:%lld",LLONG_MIN,LLONG_MAX);
    
    return 0;
}

Aqui Insert Picture Descrição

9,2 inteiro sem sinal

nome formulário matcher Format tamanho pegada mínimo máximo
inteiro curto unsigned short (int) % Hu 2 bytes 0 65535
número inteiro int não assinado em% 4 bytes 0 4294967295
inteiro longo unsigned longo (int) % Lu sistema de janelas 32 e 64 é de 4 bytes; o sistema Linux, 32 é de 4 bytes, 8 bytes 64 0 4294967295
inteiro longo unsigned longo longo (int) host% 8 bytes 0 18446744073709551615
#include <stdio.h>
#include <limits.h>

int main(void)
{
    printf("unsigned short的大小为:%d个字节\n",sizeof(unsigned short));
    printf("unsigned short的最大值是:%hu\n",USHRT_MAX);
    
    printf("unsigned int的大小为:%d个字\n",sizeof(unsigned int));
    printf("unsigned int的最大值是:%u\n",UINT_MAX);
    
    printf("unsigned long的大小为:%d个字节\n",sizeof(unsigned long));
    printf("long的最大值是:%lu\n",ULONG_MAX);
    
    printf("unsigned long long的大小为:%d个字节\n",sizeof(unsigned long long));
    printf("long long的最大值是:%llu",ULLONG_MAX);
    
    return 0;
}

Aqui Insert Picture Descrição

sentido sincero de Wang Fei Xie Chuanzhi transmitido professores convidados elaborados e materiais fornecidos.

Lançado quatro artigos originais · ganhou elogios 0 · Visualizações 79

Acho que você gosta

Origin blog.csdn.net/Dylan_Cai/article/details/105034879
Recomendado
Clasificación