Aldo Nogueira wrote: >Thiago Macieira writes: >> voc� n�o o declarou. No seu b.cpp, a fun��o define o s�mbolo >> 'funcao(void)', que n�o � a mesma coisa! > >Eh sim! Eh porque eh C. Em C nao overload de funcao, como o Elvis >sabiamente lembrou (mentira: eu nao sabia)
Voc� � obrigado a definir uma fun��o como extern "C", se quiser us�-la em C. O
seu c�digo n�o fazia isso. Logo, a fun��o que voc� definiu era
'funcao(void)'.
>> N�o. Mesmo porque voc� compilou c�digo C com o g++ -- voc� n�o compilou
>> c�digo C como C++. Existe uma diferen�a a�.
>
>Ateh onde eu sei, soh o estilo de linkagem eh que muda.
N�o. Voc� pode compilar C com o g++ -- funciona id�ntico ao gcc. Agora, fica
totalmente diferente compilar C como se fosse C++ -- isto �, como se voc�
renomeasse o arquivo. E nem todo C perfeitamente v�lido � C++ v�lido.
>> Faltou justamente o 'extern "C"' no seu c�digo:
>>
>> /*** b.hpp ***/
>> extern "C" void funcao();
>> /*** eof ***/
>>
>> agora deve funcionar.
>
>Nao funciona porque o b.hpp eh incluido no a.c e por isso este nao
>compila.
#ifdef __cpluspls
extern "C" void funcao();
#else
void funcao();
#endif
PS: esta discuss�o deveria estar na prog-br. Se for responder, responda para
l�. S� n�o fa�o isto porque n�o sei se voc� est� cadastrado.
--
Thiago Macieira - UFOT Registry number: 1001
[EMAIL PROTECTED]
ICQ UIN: 1967141 PGP/GPG: 0x6EF45358
Registered Linux user #65028
msg78443/pgp00000.pgp
Description: signature
