在c语言中调用foo函数 c语音中调用函数

怎样在c程序里面调用其他程序C++和C是两种完全不同在c语言中调用foo函数的编译链接处理方式 , 如果直接在C++里面调用C函数,会找不到函数体,报链接错误 。要解决这个问题,就要在 C++文件里面显示声明一下哪些函数是C写在c语言中调用foo函数的,要用C的方式来处理 。
1.引用头文件前需要加上 extern “C”,如果引用多个,那么就如下所示
extern “C”
{
#include “ s.h”
#include “t.h”
#include “g.h”
#include “j.h”
};
然后在调用这些函数之前,需要将函数也全部声明一遍 。
2.C++调用C函数的方法,将用到的函数全部重新声明一遍
extern “C”
【在c语言中调用foo函数 c语音中调用函数】{
extern void A_app(int);
extern void B_app(int);
extern void C_app(int);
extern void D_app(int);
}
C++程序中调用被c编译器编译后的函数,为什么要加extern "C"?
C++语言支持函数重载 , C语言不支持函数重载 。函数被C++编译后在库中的名字与C语言的不同 。假设某个C 函数的声明如下在c语言中调用foo函数:
void foo(int x, int y);
该函数被C 编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字用来支持函数重载和类型安全连接 。由于编译后的名字不同,C++程序不能直接调用C 函数 。C++提供了一个C 连接交换指定符号extern“C”来解决这个问题 。例如:
extern “C”
{
void foo(int x, int y);
// 其它函数
}
或者写成
extern “C”
{
#include “myheader.h”
// 其它C 头文件
}
这就告诉C++编译译器,函数 foo 是个C 连接,应该到库中找名字_foo 而不是找_foo_int_int 。C++编译器开发商已经对C 标准库的头文件作了extern“C”处理,所以我们可以用#include 直接引用这些头文件 。
C语言里的foo是什么?foo在C语言中经常作为方法名或者类名,英文全称为function object Oriented,即面向对象函数 。
foo常与bar搭配,foobar又为foo-bar,其中bar是beyond all recognition的缩写,通俗点就是无法识别,一塌糊涂的意思 。
而foo是fu的变体,fu是英语习语fuck-up的缩写 , 同样是一团糟的意思 。于是,有些编程经验的人,应该就已经明白了为何如今许多编程实例所涉及的事物均被冠名为foo 。
扩展资料
定义和语源——
至今约有212 个RFC中有术语'foo','bar'或'foobar'作为伪变量(metasyntactic variable)没有任何适当的解释或定义 。
foo /foo/
1、 interj. 令人反感的术语 。
2、 用于任何东西的一般的名称,特别是程序和文件(特别是草稿文件) 。
3、用于语法例释的标准伪变量表中的第一个(bar, baz, qux, quux, corge,grault, garply, waldo, fred, plugh, xyzzy, thud). [JARGON]
c语言中自定义函数能否放在main函数后面可以放在main()函数后面,需要在mian()函数前面做个函数申明 。
在一个源文件中定义函数且在另一个文件中调用函数时 , 函数声明是必需的 。在这种情况下,应该在调用函数的文件顶部声明函数 。如:
#include stdio.h
/* 函数声明 */
int max(int num1, int num2);
int main (){......
函数声明会告诉编译器函数名称及如何调用函数 。函数的实际主体可以单独定义 。
函数声明包括以下几个部分:
return_type function_name( parameter list );
扩展资料:
C语言书写规则:
1、一个说明或一个语句占一行 。
2、用{} 括起来的部分,通常表示了程序的某一层次结构 。{}一般与该结构语句的第一个字母对齐 , 并单独占一行 。

推荐阅读