// my_c_function.c
//
#include <stdio.h>
#include "my_c_function.h"
void print_hello_from_c() {
printf("Hello from C!\n");
}
// my_c_function.h
extern "C"
{
void print_hello_from_c();
}
// my_cpp_code.cpp
//
#include "my_c_function.h"
extern "C" {
void print_hello_from_c();
}
int main() {
print_hello_from_c(); // 调用C函数
return 0;
}
g++ -o my_c_function.o -c my_c_function.c -I ./
g++ -o my_cpp_code.o -c my_cpp_code.cpp
g++ my_c_function.o my_cpp_code.o -o my_program
用g++ 编译时,如果my_c_function.h 里面有extern “C” 是c的编译方式, 调用如果不extern "C" 会编译失败
// my_c_function.h
print_hello_from_c
hfu@CNSH-BLD1:~/program/cplusplus/extern_test$ objdump -t my_c_function.o
my_c_fu

博客介绍了使用g++编译时的情况。当my_c_function.h中有extern “C” 时,采用C编译方式,调用时若不使用extern \C\ 会编译失败;若my_c_function.h中没有extern “C” ,则采用C++编译方式。
最低0.47元/天 解锁文章
379

被折叠的 条评论
为什么被折叠?



