函数:
①C语言在相同的.c文件中一定不能定义名称相同的函数,即使是重载的,因为C语言不支持重载,这样链接的时候会报错.
变量:
①静态变量在同一个.c文件中可以命名相同,但是只能初始化一次,否则链接出错.而且实际只有一个该名字的变量.
如 static int tst; static int tst; //可以.
static int tst = 0; static int tst; //可以
static int tst = 0; static int tst = 0;//错误
具体可以百度强符号与弱符号.
以上.
这要看你函数的作用域是全局还是局部,如果作用域是全局的话,编译器会报错:重复定义;如果函数只是作用于当前的文件,函数定义前加上static修饰,函数仅仅作用于当前文件
这不是两个函数,这是一个函数,extern "C" int listid(int id, OUT *);
中的extren通知编译器int listid(int id, OUT *)不在本源代码中实现,
"c"通知编译器用C调用方式调用在另外的一个源程序的函数,
C语言默认的调用方式就是C调用 C◆◆就不同了,,所以最好加个"c"
另:调用方式规定了调用的时候输入参数的顺序和函数返回后输入参数占用的空间由调用程序释放还是由函数释放.这东西不一定要太懂,知道用"c"去考虑调用方式就可以了.
参数不同也是可以的,但是执行一定会有错误,而且应该不能出现同名不同参数的的令一个函数.要不连接的时候就找不到正确的函数.
c语言中一个完整的函数由函数首部和函数体构成,而且定义函数时两者都是必不可少的.
函数定义的一般形式如下:
类型标识符
函数名(形参表列)
//
这是函数首部
以下{
}内的是函数体
{
说明部分
执行部分
}
举例说明如下:
定义一个不带返回值的函数
函数功能:输出形参的值
void
fun(int
a,
int
b)
printf("%d,
%d\n",
b);
定义一个带返回值的函数
return
ab
a
:
b;
如果是用纯C语言来写,把所有函数声明放在最前面,然后函数定义好,这样的函数是公有的,可以随意调用.然后主函数不能少,这样子的话,所有函数包括主函数的前后顺序可随意.
void fun1();
//...
int main()
return 0;
void fun1()
//code...
#includestdio.h
void?fun1(){}
void?call(char?choice)
switch(choice)
case?'1':
fun1();
break;
break;?
defult:
break;??
int?main(void)
char?ch;
int?i=0;
ch=getchar();
while(ch!='\n')
choice[i]=ch;
i◆◆;
for(int?j=0;ji;j◆◆)
call(choice[j]);
return?0;