13.01.2015 Views

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

✐<br />

✐<br />

✐<br />

“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 43 — #81<br />

✐<br />

2.2. Herrami<strong>en</strong>tas para compilación modular<br />

que la definición es externa al fichero, o que la definición se <strong>en</strong>cu<strong>en</strong>tra después <strong>en</strong><br />

este fichero.<br />

Declarar una variable sin definirla implica usar la palabra reservada extern antes<br />

de una descripción de la variable, como por ejemplo:<br />

extern int a;<br />

extern también se puede aplicar a la declaración de funciones. Para func1()<br />

sería algo así:<br />

extern int func1(int l<strong>en</strong>gth, int width);<br />

Esta s<strong>en</strong>t<strong>en</strong>cia es equival<strong>en</strong>te a las declaraciones anteriores para func1() . Como<br />

no hay cuerpo de función, el compilador debe tratarla como una declaración<br />

de función <strong>en</strong> lugar de como definición. La palabra reservada extern es bastante<br />

superflua y opcional para la declaración de funciones. Probablem<strong>en</strong>te sea desafortunado<br />

que los diseñadores de C no obligaran al uso de extern para la declaración<br />

de funciones; hubiera sido más consist<strong>en</strong>te y m<strong>en</strong>os confuso (pero hubiera requerido<br />

teclear más, lo cual probablem<strong>en</strong>te explica la decisión).<br />

Aquí hay algunos ejemplos más de declaraciones:<br />

//: C02:Declare.cpp<br />

// Declaration & definition examples<br />

extern int i; // Declaration without definition<br />

extern float f(float); // Function declaration<br />

float b; // Declaration & definition<br />

float f(float a) { // Definition<br />

return a + 1.0;<br />

}<br />

int i; // Definition<br />

int h(int x) { // Declaration & definition<br />

return x + 1;<br />

}<br />

int main() {<br />

b = 1.0;<br />

i = 2;<br />

f(b);<br />

h(i);<br />

} ///:~<br />

En la declaración de funciones, los id<strong>en</strong>tificadores de los argum<strong>en</strong>tos son opcionales.<br />

En la definición son necesarios (los id<strong>en</strong>tificadores se requier<strong>en</strong> solam<strong>en</strong>te <strong>en</strong><br />

C, no <strong>en</strong> <strong>C++</strong>).<br />

Incluir ficheros de cabecera<br />

La mayoría de las librerías conti<strong>en</strong><strong>en</strong> un número importante de funciones y variables.<br />

Para ahorrar trabajo y asegurar la consist<strong>en</strong>cia cuando se hac<strong>en</strong> declaraciones<br />

externas para estos elem<strong>en</strong>tos, C y <strong>C++</strong> utilizan un artefacto llamado fichero de ca-<br />

43<br />

✐<br />

✐<br />

✐<br />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!