以前只知道extern "c" 大概是怎么回事,但是从来没动手用过。
今天小试了一下。 包括四个文件 cExample.h, cExample.c, example.cpp, 以及Makefile
cExample.h
#ifndef _CEXAMPLE_H_ #define _CEXAMPLE_H_ extern int add(int a, int b); #endif
cExample.c
#include <stdio.h> #include "cExample.h" int add(int a, int b) { printf("In %s\n", __FUNCTION__); return a+b; }
example.cpp
#include <stdlib.h>
#include <iostream>
extern "C"{
#include "cExample.h"
}
using namespace std;
int main(int argc, char *argv[])
{
if (argc<3){
fprintf(stdout, "Usage: %s <int> <int>\n", argv[0]);
return -1;
}
int a = atoi(argv[1]);
int b = atoi(argv[2]);
add(a, b);
return 0;
}
Makefile
#makefile all:test SRC=example.cpp cExample.o:cExample.c gcc -c -o cExample.o cExample.c test:$(SRC) cExample.o g++ -o $@ $(SRC) cExample.o
执行时: ./test 3 5
输出:
In add
8