c語言多文件項目修改後無法編譯
代碼寫的錯誤好多
#include<stdio.h>
intmain(void)
{
inthow;
printf("請計算7的平方. ");//反斜杠才是轉義
scanf("%d",&how);//&---
if(how==49)
printf("true! ");//
else
printf("false! ");//
return0;
}
2. 關於C語言多文件編譯的問題
使用頭文件
例如: 原來是一個文件 hello.c /hello.h
有函數
void test1();
void test2();
void test3();
void test4();
把函數說明和對應的函數體,放到多個文件.c和.h文件的函數是對應的.
hello.c/hello.h
void test1();
void test2();
---
part1.c/par1.h
void test3();
void test4();
3. 為什麼我的c語言編輯器無法編譯了
看你新建的項目,名字也沒有,什麼也沒保存只是在軟體上敲了一大堆,保存一下再編譯
4. c語言中多個文件的編譯問題
第一個問題
請問,我是不是該這樣做:
在main.c中#include
在fun.c中同樣#include
(好像是必需的,請詳細解釋)
這是必需的。因為編譯器只是把包含文件的代碼復制過來,既然你二個文件中都用到頭文件的內容,那當然要包含頭文件,否則就會出錯。
我的觀點,如果這兩步都是必需的
那麼當有很多個比如10個.c程序每個里頭都要#include
那麼文件是不是會特別大,當有100個.c程序都要包含一下的話,那麼不是非常重復么?)
那當然是會重復的。不過這個對程序的運行效率沒任何影響,只是在編譯過程中對文件的分析時間會稍長些,這也是沒有辦法的事,全看代碼編寫者如何組織結構了。
第二個問題:
會的。解決的方法就是在可能被多次包含的頭文件中開頭加上#pragma
once,那樣就可以保證此頭文件代碼只被執行一次,而不會造成頭文件中函數多次重復定義至於引起這種情況的情況。當然你也可以自己用#ifdef等預編譯處理來解決。你問的問題不就是這種情況么?main.c和fun.c中都包含頭文件tou.h
第三個問題:
當我在main.c中這樣
#define
unchar
unsigned
char
那麼當我在fun.c中還需要重新創建替換宏unchar嗎
可以不在創建而直接使用嗎?
答案是需重新創建,不能直接使用。但你可以把一些在多個文件中使用的宏、全局變數等統一定義到一個頭文件中,那這樣就可以避免多次定義了。
5. C語言編譯和運行包含多個文件的程序為什麼會出現這種情況
是否該文件前面掉了頭文件包含:#include <stdio.h>
6. c語言求解答,為什麼頭文件中修改值再次編譯後沒用
這個跟宏沒關系,跟你的函數聲明有關系。
數組作為函數形參的的時候,mine[ROW][COL]這樣寫數組大小是沒用的,在函數內部只能取到數組的首地址(當指針處理),不知道數組的大小(不知道指針指向多大的空間),所以你改形參里的ROW和COL沒有任何意義。
7. C語言多文件編譯問題
temp_part2.cpp中的
void INITIALIZE(list * ptr) {
改為
void INITIALLIZE(list * ptr) {
8. C語言源代碼編譯一次後,就不能再編譯
你用輸出的二進制運行文件覆蓋了源代碼,改成gcc helloworld.c -o helloworld, (去掉後綴)
-o 表示輸出到