分类: C/C++
2010-03-11 14:14:23
#ifdef __cplusplus
extern "C" {
#endif
//一段代码
#ifdef __cplusplus
}
#endif
int f(void)
{
return 1;
}
.file "test.cxx"
.text
.align 2
.globl _f
.def _f; .scl 2; .type 32; .endef
_f:
pushl %ebp
movl %esp, %ebp
movl $1, %eax
popl %ebp
ret
.file "test.cxx"
.text
.align 2
.globl __Z1fv
.def __Z1fv; .scl 2; .type 32; .endef
__Z1fv:
pushl %ebp
movl %esp, %ebp
movl $1, %eax
popl %ebp
ret
//f1.c
extern "C"
{
void f1()
{
return;
}
}
// test.cxx
//这个extern表示f1函数在别的地方定义,这样可以通过
//编译,但是链接的时候还是需要
//链接上原来的库文件.
extern void f1();
int main()
{
f1();
return 0;
}
test.o(.text + 0x1f):test.cxx: undefine reference to 'f1()'
extern "C"
{
#include "f.h"
}
extern "C"
{
extern void f1();
}
int main()
{
f1();
return 0;
}