2015年12月13日星期日

C和C++项目中的extern "C" {}

参见这篇帖子

关于C语言中的extern,一个例子:
1.c文件如下:
#include <stdio.h>

int fun1(int i)
{
    return i + 1;
}

void main()
{
    int i;
    extern int j;
    extern int fun2(int i);

    printf("%d\n", fun2(j));
}

2.c文件如下:
extern int fun1(int i);

int j = 3;

int fun2(int i)
{
    return fun1(i) + 2;
}

编译运行:
$ gcc -c 1.c 2.c
$ gcc 1.o 2.o -o 1
$ ./1
输出结果为6.

关于C调用C++、C++调用C,请参考上面帖子链接中的例子。

对于C和C++的混合编译,参考这个帖子
一个例子:
$ g++ -c cpp2c.cpp -o cpp2c.o
$ gcc -c csayhello.c -o csayhello.o
$ gcc cpp2c.o csayhello.o -lstdc++ -o cpp2c
注意到,在最后链接的时候指定 C++ 标准库是必须的,这是因为我们用的是 gcc 而不是 g++ 调用的链接器。最后如果使用的是 g++ 的话,C++ 标准库默认会被链接。

没有评论:

发表评论