manshowheart 2017-03-28 20:50 采纳率: 0%
浏览 2357

为什么两个c源文件的函数不能互相调用

文件main.c
#include

extern void print(void);
extern void print1(void);
static int i=100;
void main(void)
{

printf("i is :%d\n",i);
print();
print1();
getch();

}

文件11.c
#include

static int i=1000;
void print(void)
{

printf("\ni is :%d",i);

}
void print1(void)
{
i=10;
printf("\ni is:%d",i);

}

我试过写#include "11.c"进main.c,但是编译器会报错redefition i,我不明白static不是只作用在原文件吗?怎么回出现重复定义的.![图片说明](https://img-ask.csdn.net/upload/201703/29/1490734430_640768.png)图片说明

  • 写回答

4条回答 默认 最新

  • 战在春秋 2017-03-28 21:58
    关注

    在C语言中,#include指令的作用,**就是将引入的目标文件中的内容拷贝到我们的源文件中**。

    这里的拷贝就是真正意义上的复制,#include "11c"后,main.c中同时有:
    static int i=100;
    static int i=1000;
    所以就报重复定义的错。

    再来个例子,帮助理解:
    假如a.txt中内容为:

    printf("haha\n");

    则下面代码:

     int main()
    
    {
    
        printf("haha\n");
    
        #include "a.txt"
    
        return 0;
    
    }
    
    

    的输出结果为:

    haha
    
    haha
    
    评论

报告相同问题?

悬赏问题

  • ¥50 comsol稳态求解器 找不到解,奇异矩阵有1个空方程返回的解不收敛。没有返回所有参数步长;pid控制
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功