Em resumo, a questao era compilar codigo C chamando C++.
O problema que ocorre eh que o estilo de linkagem de C eh
diferente de C++ entao, a principio, nao eh possivel linkar.
$ gcc -c a.c | compila como codigo C (chama a funcao)
$ gcc -c b.cpp | compila como codigo C++ (contem a funcao)
$ gcc a.o b.o -o prog | tenta e dah erro
Eh possivel resolver trocando 'gcc' por 'g++' na linha de comando,
mas nem sempre codigo C valido eh valido tambem em C++.
Tah certo que eh 0.01% dos casos, mas existe.
Entao a melhor solucao ateh agora foi por a seguinte declaracao
no arquivo b.hpp que eh o header da funcao 'funcao':
#ifdef __cplusplus
extern "C" void funcao();
#else
void funcao();
#endif
Assim o mesmo header serve tanto pra C quanto C++ e em C++ fica
explicito que o estilo de linkagem dessa funcao eh C, portanto
podemos linkar sem problemas.
--------------------------------------
Mas, como foi lembrado, essa discussao fica melhor na lista prog-br, pois
eh apenas sobre programacao. Eu li as mensagens de todo mundo e a minha
opiniao, pesando os pros e contras, eh essa.
Me inscrevi na prog-br agora. Qualquer reply por favor mandar para essa
lista, por favor.
E gostaria tambem de convidar a galera pra lah pra gente poder discutir
mais livremente esses assuntos.
Abracos.

Aldo
Assinantes em 29/11/2002: 2262
Mensagens recebidas desde 07/01/1999: 192049
Historico e [des]cadastramento: http://linux-br.conectiva.com.br
Assuntos administrativos e problemas com a lista: mailto:[EMAIL PROTECTED]

Responder a