El proceso de compilación y el tipo de datos (a)

El proceso de compilación y el tipo de datos (a)


1. g ++ compilación proceso

Aquí Insertar imagen Descripción

1.1 Pretratamiento

  • Los archivos generados: xxx.c generada por el xxx.i (origen) (archivo preprocesado).

  • Herramientas: preprocesador (compilador gcc incluido en el conjunto de herramientas).

  • La generación de comandos: gcc -E xxx.c -o xxx.i preprocesamiento parámetros es la que -E

  • papel:

    • Expandir el archivo de cabecera

      • Ampliar stdio.h, archivos de cabecera stdlib.h y otro tipo de contenido, y el contenido específico y expandir juntos otra fuente, se almacena en el archivo de xxx.i. (#Include <stdio.h> Estos comandos tratamiento previo pretratamiento no existe en el archivo de xxx.i, que ha sido sustituido por un contenido específico)
      • Este proceso no es responsable de comprobar el error de sintaxis, es un error de sintaxis en el proceso de compilación. Por lo tanto, si el primer documento escrito nada puede ser, no importa qué formato el sufijo archivo de cabecera puede ser, y puede ser desplegado en otra fuente de xxx.i.

      Usted puede probar: Escribir un nombre para el archivo de cabecera 111.txt, acaba de escribir lo que hay dentro. Escribe un nombre de archivo para el text.c fuente, en la cabecera usando 111.txt, a saber: # include <111.txt>. Los archivos de cabecera y de la fuente en un directorio, y luego ejecutar gcc -E text.c -o text.i -I. Este comando se puede ver en el archivo generado text.i, escritura aleatoria de este archivo de cabecera , también se ha puesto en marcha y los demás códigos restantes juntos de todos modos. (Este último comando añade a == - ==, respectivamente, guiones, mayúsculas I I, períodos, el papel es una fuente de los archivos de cabecera utilizados en el mismo directorio, por lo demás sin este -I .. si no puede encontrar los archivos).

    • Vuelva a colocar la definición de macro

      • Reemplazará el valor del nombre de macro macro.
      • Tales como: el archivo de origen tiene #define PI 3.14, y utiliza los códigos PI abajo, luego se transformó en un archivo que pretratamiento xxx.i, #define PI 3.14desaparecer de forma simultánea, todos los códigos de la inferiores se han convertido en PI 3,14.
    • reemplazar los comentarios

      • Sola línea, comentario de varias líneas será reemplazada por una línea en blanco en el xxx.i.
    • Ampliar la compilación condicional

      • Las condiciones para ampliar el código.
      • Tales como: la presencia del siguiente código, #ifdef PIel Código es una condición, si se define PI, pondrá el código printf("PI has been defined.");en el que xxx.i, al mismo tiempo, #ifdef PIy #endifdesaparecen. Si no se define PI antes de esa fecha #ifdef PIy printf("PI has been defined.");, y #endifesta pieza ya no mostrará 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

  • Los archivos generados: xxx.s generación (archivo compilado) por un xxx.i (archivo preprocesado).
  • Herramientas: compilador (compilador GCC incluido en el conjunto de herramientas).
  • La generación de comandos: gcc -S xxx.i -o xxx.s que se compila parámetro -S
  • papel:
    • errores de sintaxis cheque progresiva, que está entre el compilador gcc cuatro pasos el más importante y requiere mucho tiempo.
    • El programa C traducido a instrucciones de montaje, .s obtener archivos de ensamblaje.

1.3 Compilación

  • El archivo resultante: generada por xxx.s (conjunto de archivos) xxx.o (el archivo de destino). son archivos de objetos de lenguaje de máquina binaria, los seres humanos no pueden leer. (Tenga en cuenta, sin embargo, es un archivo binario, pero no se abre después de que éstos 101010, 101010, porque lo que vemos es una serie de cuerdas, no reconocida por el ordenador 101010).
  • Herramientas: ensamblador (compilador gcc incluido en el conjunto de herramientas).
  • La generación de comandos: gcc -c xxx.s -o xxx.o el que el parámetro es una compilación -c
  • papel:
    • Traducción: Las instrucciones de ensamblador traduce en un correspondientes instrucciones binarias.

1.4 Enlaces

  • Los archivos generados: generar xxx.exe (archivo ejecutable) por el xxx.o (el archivo de destino). Los archivos ejecutables son lenguaje de máquina binaria, los seres humanos no pueden leer.
  • Herramientas: enlazador (compilador gcc está incluido en el conjunto de herramientas).
  • La generación de comandos: gcc -o xxx.o xxx.exe no hay parámetros de enlace
  • papel:
    • Biblioteca se introduce: la introducción de las bibliotecas, tales como: printf biblioteca, sistema, como scanf función.
    • Combine varios archivos de objetos
    • La rutina de arranque combinado (rutina es llamar a la función principal)

1.5 Resumen

  • El proceso anterior puede referirse a la siguiente:

Aquí Insertar imagen Descripción

  • El proceso anterior no tiene que ir paso a paso, se puede transformar directamente desde un lado frontal por cualquier instrucción en cualquier uno detrás, tales como:
    • Puede cambiarse de xxx.c xxx.i (instrucción gcc -E xxx.c -o xxx.i),
    • Puede convertirse en xxx.s de xxx.c (instrucción gcc -S xxx.c -o xxx.s),
    • Xxx.c puede llegar a ser xxx.o (instrucción gcc -c xxx.c -o xxx.o),
    • Xxx.c puede llegar a ser xxx.exe (instrucción gcc -o xxx.c xxx.exe),
    • Puede convertirse en xxx.s de xxx.i (instrucción gcc -S xxx.i -o xxx.s),
    • Xxx.i puede convertirse xxx.o (instrucción gcc -c xxx.i -o xxx.o),
    • Xxx.i puede convertirse xxx.exe (instrucción gcc -o xxx.i xxx.exe),
    • Y así sucesivamente (ejemplificado en la figura parte inferior) ...
      Aquí Insertar imagen Descripción

2. función principal

2.1 función principal en dos formas estándar

  • No hay argumentos:int main(void) {return 0;}

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

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

2.2 función principal otras formas

  • int main()

  • void main()

  • int main(int c)

  • main()

  • main(int c)

  • Etc. Otros ... aunque estos no son la forma estándar, pero el compilador puede aceptar.


3. Depuración

  • La depuración es utilizado para encontrar error lógico se produjo en el programa, no hay errores gramaticales! El editor no es algo malo.

  • La idea central: que la línea del programa de ejecución de la línea.

  • Número de línea: Herramientas - Opciones - Editor de texto - C / C ++ - número de línea (cheque).

  • proceso de depuración :

    • los puntos de interrupción Adición de: uno o más

      1. Método uno: Haga clic izquierdo en el punto de interrupción que desee añadir esta línea a la izquierda de la zona gris, haga clic de nuevo para cancelar.

      2. Segundo método: el cursor del ratón se detiene en un punto de interrupción en cualquier lugar que desee añadir esta línea, presione F9 para añadir, pulse F9 nuevamente desaparecer.

    • Depuración: depuración debe estar en modo de depuración, modo de lanzamiento no puede ser.

    • F5 para iniciar la depuración (diferentes atajos de software pueden ser diferentes, se pueden ver en la barra de herramientas arriba).

    • El programa puede ser ejecutado antes del descanso, no se ejecuta el primer punto de ruptura después del programa.

    • El modo de depuración:

      1 ** - by-sentencia se ejecuta. ** teclas de acceso directo F11, una por una declaración a la siguiente línea, que cumple la función en la función (consulte la función personalizada), la función continúa para ejecutar sentencias de uno en uno, después de la función ha terminado fuera de la función de seguimiento para seguir una ejecución por uno.

      2 ** por el proceso de implementación. ** teclas de acceso directo F10, uno por uno proceso a la siguiente línea, la función se encuentran, no entran en la función interna, continuará el seguimiento de la ejecución de uno en uno.

      3. ejecución por los puntos de interrupción. Cuando hay varios puntos de interrupción en el código, haga clic en la barra de herramientas por encima de los "Continuar" saltar directamente al siguiente punto de interrupción, no hay atajos.

      4. Función de rebote: shift + 10, puede estar fuera de una función del punto de ruptura actual. (Porción no ejecutada de las preformas desechables la función)

Aquí Insertar imagen Descripción


4. variable

Tres elementos de la variable 4.1

  • Los tipos de variables: entero, real, carácter, etc., para abrir la variable tamaño del espacio de memoria.
  • Los nombres de variables: para su uso en el programa.
  • Los valores de variables: los datos reales almacenados en la variable.

4.2 Definición de variables

  • Define la sintaxis: nombre tipo variable name = valor de la variable. Tales como:int a = 10;
  • variable definida, la memoria se abrirá un espacio correspondiente a la variable, pero la declaración de variables no se abre espacio en la memoria.

4.3 Declaración de variables

  • sintaxis:
    • Método uno: int a;la variable no se define el valor de la variable, es decir, las declaraciones de variables.
    • Segundo método: extern int a;Usar la palabra clave extern declaró.
  • características:
    • Si desea utilizar una variable, lo primero debe definir.
    • El compilador antes de utilizar variables miradas hacia adelante la definición, si no se define, el compilador encontrará automáticamente la declaración de variables, fue ascendido a la definición.
    • En uno, si se declara con extern, no puede ascender.

5. constante

Las constantes no se cambian y no se pueden modificar los datos. Hay alrededor de tres maneras:

  • "Hola" es una constante de cadena, 'a' es una constante de caracteres, 25 es un número entero constante, constante real es 63.335.
  • Usando definen definiciones de macro (el más común), la sintaxis: #define 宏名 宏值. Por ejemplo:#define PI 3.14
    • Tenga en cuenta que el nombre de macro y no los valores intermedios macro signo igual, no hay final de una frase símbolos
  • Usar la palabra clave const, la sintaxis: nombre de tipo const nombre de variable = valor de la variable, como por ejemplo:const int a = 1;
    • una variable podría haber sido, pero después de la modificación palabra clave const, se convierte en una variable de sólo lectura.

6. Identificador

  • nombre de la variable y el nombre genérico de la denominación constante.

6.1 requisito obligatorio

  • Identificado por letras, números, composición de subrayado (_).
  • Palabras clave y los identificadores no pueden ser un nombre de función, como el principal, del sistema, de retorno, flotar, etc., no pueden.
  • Identificador no puede comenzar con los números, letras y puede comenzar con un guión bajo.
  • mayúsculas y minúsculas:
    • En general, utilizar letras mayúsculas para representar constantes, tales como:#define MAX 200
    • Típicamente utilizar letras minúsculas para la variable, tales como:int a = 10;

convención de nomenclatura 6,2

  • Large joroba Método: int HelloWorldHahaHohoHehe = 10;

    • nombres de las variables varias palabras, en mayúscula la primera letra de cada palabra.
  • Pequeña joroba Método: int helloWorldHahaHohoHehe = 10;

    • Varias palabras nombres de las variables, la primera letra de la primera palabra en minúsculas, y el resto de cada palabra en mayúscula.
  • + Lowercase subrayado: int hello_world_haha_hoho_hehe = 10;

    • especial lenguaje C!

7. sizeof palabra clave

  • sizeof no es una función, que es la palabra clave.
  • Utilizado para obtener el tipo de datos, variable con el tamaño del espacio de memoria.
  • Modo de empleo:
    • sizeof (nombre de la variable) Devuelve un tamaño variable, en bytes.
    • sizeof (tipo de datos) Devuelve el tamaño del espacio de memoria ocupado por el tipo de datos, en bytes.
    • variable de apoyo en el idioma nombre de sintaxis C sizeof para la redacción, no se usa comúnmente.

8. Función printf

  • función printf es la salida con formato.
  • La forma general es:printf("格式匹配符", 输出表列);

8.1 Formato de coincidencias d

situación común es %d %md %-md %ld %lld %hd

  • %dRepresenta el número real de bits de salida en datos enteros.
  • %mdIndica bits de datos de salida, si m es menor que el número real de bits de datos, el número real de bits de acuerdo con la salida de datos, si m es mayor que el número real de bits de datos, el resultado de salida de m bits justificado a la derecha, rellena con espacios dejados.
  • %-mdCuando m es mayor que cuando el número real de bits representada por los datos, la salida de m bits, el resultado justificado a la izquierda, acolchado derecha con espacios.
  • %ldLetra L representa entero largo. Las modificaciones pueden ser añadidos m, n, menos similares, las reglas anteriores.
  • %lldLetras LL enteros largos largos. Las modificaciones pueden ser añadidos m, n, menos similares, las reglas anteriores.
  • %hdEn la letra h representa un entero corto. Las modificaciones pueden ser añadidos m, n, menos similares, las reglas anteriores.
#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;
}

Aquí Insertar imagen Descripción

8.2 Formato de coincidencias f

  • forma común de:%f %m.nf %-m.nf %mf %.nf
  • %fEs la longitud real real de los datos de salida.
  • %-m.nfM es un número entero positivo que representa la anchura de datos, que comprende una parte fraccionaria, la parte entera y un punto decimal; n es un entero positivo que representa el número de posiciones decimales.
#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;
}

Aquí Insertar imagen Descripción

Formato de caracteres 8.3 matcher

  • Las formas comunes% c, da salida a un personaje.
#include<stdio.h>
int main(void)
{
    char c = 'A';
    printf("%c",c);
    return 0;
}

formato de cadena de coincidencias 8,4

  • Las formas comunes %s和%m.ns. m representa una salida de longitud de cadena lo permite, n es el número de caracteres de la cadena 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;
}

Aquí Insertar imagen Descripción


9. número entero

La obtención del valor mínimo del valor máximo cuando el tipo de datos, requiere el uso de archivos de cabecera#include<limits.h>

9.1 Número entero con signo

nombre formulario formato de coincidencias tamaño de la huella mínimo máximo
entero corto corto (int) % hd 2 bytes -32768 32767
entero En t %re 4 bytes -2147483648 2147483647
entero largo de largo (int) % ld sistema de ventanas 32 y 64 es de 4 bytes, el sistema Linux, 32 es de 4 bytes, 8 bytes 64 -2147483648 2147483647
entero largo largo de largo (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;
}

Aquí Insertar imagen Descripción

9,2 entero sin signo

nombre formulario formato de coincidencias tamaño de la huella mínimo máximo
entero corto corto sin signo (int) Hu% 2 bytes 0 65535
entero unsigned int en% 4 bytes 0 4294967295
entero largo largo sin signo (int) Lu% sistema de ventanas 32 y 64 es de 4 bytes, el sistema Linux, 32 es de 4 bytes, 8 bytes 64 0 4294967295
entero largo unsigned long long (int) % anfitrión 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;
}

Aquí Insertar imagen Descripción

sincero sentido de Wang Fei Xie Chuanzi transmitido maestros invitados elaborados y materiales proporcionados.

Publicado cuatro artículos originales · ganado elogios 0 · Vistas 79

Supongo que te gusta

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