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

Attachment: msg78443/pgp00000.pgp
Description: signature

Responder a