Resolução da 1ª Aula Prática

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