- 论坛徽章:
- 0
|
本帖最后由 julynada 于 2010-11-12 13:48 编辑
刚才做了一个实验。
方式一:全部采用g++编译makefile- all:ttt
- a.o:a.c
- g++ -c a.c
- ttt.o:ttt.c
- g++ -c ttt.c
- ttt:ttt.o a.o
- g++ -o ttt ttt.o a.o
复制代码 a.c- #include <stdio.h>
- int
- funca ( char * str )
- {
- printf ( "funca says:%s\n", str );
- return 0;
- }
复制代码 ttt.c- #include <stdio.h>
- int funca( char * str );
- int
- main ( int argc , char *argv[] )
- {
- printf ( "This is the main()\n" );
- funca(argv[1]);
- }
复制代码 方式二,a.o采用gcc编译
makefile- all:ttt
- a.o:a.c
- gcc -c a.c
- ttt.o:ttt.c
- g++ -c ttt.c
- ttt:ttt.o a.o
- g++ -o ttt ttt.o a.o
复制代码 a.c- #include <stdio.h>
- int
- funca ( char * str )
- {
- printf ( "funca says:%s\n", str );
- return 0;
- }
复制代码 ttt.c- #include <stdio.h>
- int
- funca ( char * str )
- {
- printf ( "funca says:%s\n", str );
- return 0;
- }
- #include <stdio.h>
- extern "C" {
- int funca( char * str );
- }
- int
- main ( int argc , char *argv[] )
- {
- printf ( "This is the main()\n" );
- funca(argv[1]);
- }
复制代码 以上两种都能成功调用funca()。我的结论是,如果所有源码都用g++编译的话,extren "C"是不需要的。除非项目里用了第三方没源代码的gcc编译的库。
是不是这样捏?请各位评论 |
|