1. Ver Capítulo 9 das Folhas Teóricas.
1.a) c++ [opções] -E -o aluno_tudo_junto.ii aluno_tudo_junto.C
1.b) c++ [opções] -c aluno_tudo_junto.C
1.c) Não. É um ficheiro objecto.
1.d) c++ [opções] -o aluno_tudo_junto aluno_tudo_junto.o
1.e) c++ [opções] -o aluno_tudo_junto aluno_tudo_junto.C
2. Ver Capítulo 9 das Folhas Teóricas.
3.a) A ideia é "esquecer" a protecção contra a inclusão
múltipla, pois será colocada no exercício 5. Ver ex3a/aluno.H,
ex3a/aluno_impl.H,
ex3a/aluno.C
e ex3a/teste_de_aluno.C.
3.c) Ver ex3c/aluno.C.
5.a) Ver ex5/Makefile.
5.b) O erro deve-se à inclusão múltipla do ficheiro aluno.H.
Por outro lado, o módulo pauta também não tem essa protecção! Ver ex5/aluno.H
e ex5/pauta.H.
6. Ver Capítulo 9 das Folhas Teóricas.
6.c) Usar espaços nominativos Escola e Musica.
Notar mudança no nome das macros de protecção de inclusão múltipla.
Notar que o nome da macro de protecção de inclusão múltipla da pauta musical
muda! Quanto à tuna, tem a ver com escolas e com música, mas é melhor
simplesmente colocá-la no espaço nominativo Escola.
O ficheiro de construção pode ser construído parcialmente com o comando:
c++ -MM *.C
Ver ex6c/Makefile,
ex6c/aluno.H,
ex6c/aluno_impl.H,
ex6c/aluno.C, ex6c/pauta.H, ex6c/pauta_impl.H,
ex6c/pauta.C, ex6c/pauta_musical.H, ex6c/pauta_musical_impl.H,
ex6c/pauta_musical.C, ex6c/tuna.H, ex6c/tuna_impl.H,
ex6c/media.C, ex6c/procura.C, ex6c/teste_de_pauta.C
e ex6c/teste_de_pauta_musical.C.
7. Ver Capítulo 9 das Folhas Teóricas. Por vezes os espaços nominativos correspondem a bibliotecas.
7.d) O comando a usar é:
ar ru libescola.a aluno.o pauta.o
7.e) Pode-se usar:
c++ [opções] -o teste_de_pauta_musical teste_de_pauta_musical.o pauta_musical.o libescola.a
ou ainda:
c++ [opções] -o teste_de_pauta_musical teste_de_pauta_musical.o pauta_musical.o -L. -lescola