conde de acomayta
Opción C
XO R
BYTE
BIT
C
1 01 000 1 10 01 100 1
2
3
W HILE
HEXA
Clase 5
XO R
BYTE
BIT
C
10100011 001 100 1
Seminario de Lenguajes – Opción Lenguaje C
2
3
W HILE
HEXA
Clase 5 - Temario
Repaso Clase Anterior
Punteros en C
Arreglos en C
Alocación Dinámica de Memoria
XO R
BIT
BYTE
C
10100011 001 100 1Seminario de Lenguajes – Opción Lenguaje C
2
3
W HILE
HEXA
El Preprocesador
Editor
Archivo
Fuente
Archivo
Fuente
Modificado
Código
OBJ
......
Linkedición
Linkedición
Compilación
Compilación
Pre -- Procesador
Pre Procesador
XO R
BYTE
BIT
C
10100011 001 100 1
Seminario de Lenguajes – Opción Lenguaje C
2
3
W HILE
HEXA
Repaso de la claseanterior
Operadores de Macros
#: Si x es un parámetro de una macro, #x es el
parámetro actual correspondiente representado
como una cadena de caracteres.
##: Se aplica cuando se procesa la macro y se
reemplazan los parámetros formales por los
actuales. Los dos elementos que rodean alBIT
XO R
operador, se combinan.
Ver Ejemplo: directivas.pdf
BYTE
C
10100011 001 100 1
Seminariode Lenguajes – Opción Lenguaje C
2
3
W HILE
HEXA
Repaso de la clase anterior
Directivas
#include
#define
#undef
#if - #else - #ifdef - #ifndef - #elif - #endif
XO R
BYTE
BIT
C
10100011 001 100 1
Seminario de Lenguajes – Opción Lenguaje C
2
3
W HILE
HEXA
Repaso de la clase anterior
#undef: permite dejar sin efecto un define previo
#define MAX 12
..#undef MAX
#define MAX 11
XO R
BYTE
BIT
C
10100011 001 100 1
Seminario de Lenguajes – Opción Lenguaje C
2
3
W HILE
HEXA
Repaso de la clase anterior
Compilación condicional
#if - #else - #ifdef - #ifndef - #elif - #endif
#if defined(MAX)
....
#ifdef MAX
.....
#ifdef DEBUG
....sentencias a testear...
XO R
#endif
BYTE
BIT
C
10100011 001 100 1Seminario de Lenguajes – Opción Lenguaje C
2
3
W HILE
HEXA
Repaso de la clase anterior
Compilación condicional
#ifndef _HEADER
#define _HEADER
#ifndef MAX
#define MAX 100
#endif
#endif
XO R
BYTE
BIT
C
10100011 001 100 1
Seminario de Lenguajes – Opción Lenguaje C
2
3
W HILE
HEXA
Repaso de la clase anterior
La opción -D
La opción -E
gcc -E -DLINUXarchi1.c
>archi1.pp
gcc -o prog
-DLINUX archi1.c
#include
#include
#ifdef LINUX
#ifdef LINUX
#define MENSAJE "Estamos en Linux"
#define MENSAJE "Estamos en Linux"
#else
#else
#define MENSAJE "NO estamos en
Linux"
#define MENSAJE "NO estamos en Linux"
#endif
#endif
XO R
main(){
printf(MENSAJE);
}
main(){
BYTE
printf(MENSAJE);
}
BIT
C10100011 001 100 1
Seminario de Lenguajes – Opción Lenguaje C
2
3
W HILE
HEXA
Repaso de la clase anterior
Pensar...¿Son correctas?
Definir la siguiente macro:
#define inc #include
inc
Incluir la siguiente linea en archi.c
#include “archi.c”
XO R
BYTE
BIT
C
10100011 001 100 1
Seminario de Lenguajes – Opción Lenguaje C
2
3
W HILE
HEXA
Manejode punteros
XO R
BYTE
BIT
C
10100011 001 100 1
Seminario de Lenguajes – Opción Lenguaje C
2
3
W HILE
HEXA
¿Cómo trabaja la Memoria?
Cada posición de memoria almacena un
carácter o un byte (8 bits).
Cada posición tiene una dirección
específica, consecutiva. Algunos tipos se
acceden de más de un byte. 2 bytes
consecutivos componen una palabra.Los programas comparten el espacio de
direcciones con el sistema operativo.
XO R
BIT
Los datos del programa y el programa se
BYTE
2
almacenan en memoria al ser ejecutados.
C
10100011 001 100 1
Seminario de Lenguajes – Opción Lenguaje C
3
W HILE
HEXA
¿Cómo trabaja la memoria?
Está organizada en segmentos.
−
text segment código compilado del programa
−...
Regístrate para leer el documento completo.