為什么不去掉#include "test.c"會報錯
#include <stdio.h>
extern void printLine()? ? ?//這里定義的方法對嗎?
{
printf("**************\n");
}
int main()
{
say();
return 0;
}
#include <stdio.h>
extern void printLine()? ? ?//這里定義的方法對嗎?
{
printf("**************\n");
}
int main()
{
say();
return 0;
}
2019-07-25
舉報
2019-09-16
不怪,只不過是環境惹得禍。vs的集成開發環境是多線程(面向對象學習后你就曉得了)編譯的,適合大型項目開發。你可以理解編譯test.c文件和其他文件是同時進行的。當編譯test.c文件時并未找到printLine()的聲明或定義(因為這時候main.c文件還沒有編譯完成),只能假設printLine()的返回值是int類型(為啥假設int類型,,,等你有機會了問比爾·蓋茨吧。),而在編譯main.c文件時找到了printLine()的定義,但是printLine()的定義卻是void,導致再次定義失敗。
解決方法:在test.c文件中,say()前添加聲明? void printLine(); 擋掉vs集成開發環境的自作主張。
也不錯,你可以理解c函數分兩級內部(static)、外部(extern 默認)。函數被static標記后就被固定在test.c文件中了,就不能再默認跨文件調用了。想要調用就要引入文件,也就是#include "test.c"。
2019-08-08
你安裝的是哪個版本???為什么會有中文,而且底色是黑色的?
2019-07-25
去掉之后出現say未定義。。。