⑴ keil 怎麼同時編譯多個C文件
編好多個c文件,做個.h頭文件,將main函數中需要的程序以類似extern
void
getnum()的格式寫上,然後再main函數中添加include
「*.h」,便可以在main函數中使用其他c文件中定義的函數了。
⑵ keil建立一個工程中有多個程序共同編譯的方法
keil設置里要包含進來,manage components里要設置包含文件
⑶ keil中怎麼在一個工程下使用兩個C文件
LZ問題問得不詳細,回答沒法詳細。
在KEIL中使用2個 C文件,是非常簡單的。比如有一個main.c文件,和一個LCD.c文件,main.c你是如何添加到KEIL 工程中的,LCD.c就用同樣的辦法添加到 KEIL 工程中就行了。
難點不是使用2個C文件,而是在一個C文件中,如何使用另一個C文件的函數、變數等。
多個 C文件的設計,一般稱之為 模塊化設計,一個C文件就為一個設備(模塊)的功能函數(如LCD.c為液晶屏的功能函數)。這種設計的程序結構階級性是非常明顯的,如main.c 可以使用LCD.c的函數,而LCD.c 不可以使用main.c的函數,這就像一個上司可以命令下屬幹活,而一個下屬不能安排上司做事。這C語言中,這叫函數歸屬關系,上級叫 父函數、下級叫 子函數。基於這種歸屬關系,所以,在多個C文件中,只需要在父級函數內,對子函數進行 外部函數聲明(extern xxxxx();),就可以正常使用 子文件中的函數了。
但模塊化設計就是為了方便功能程序(一般主文件 我稱之為 功能程序)的編寫。如果每一個模塊都需要 main.c 在開頭寫一堆的 extern,不僅會導致主文件的程序界面混亂不堪,模塊一多,還容易出錯,增加主文件工作量。於是要求,每一個模塊文件,都必須帶有自己的聲明文件(就是對應的頭文件,如LCD.h)。主文件只需要包含這個模塊的頭文件,就能正常調用 子文件中的功能函數了,這樣才能減少功能文件的程序編寫工作,不僅可以減少出錯率,還能提供程序可讀性。只需查看功能文件內包含的頭文件,就能知道這程序有什麼功能模塊了。
⑷ keil c程序兩個副程序頭文件相同,只能調用一個,頭文件改不了,不知道怎麼解決哪位高手幫下忙,急急急
可以用預處理。就是
#ifndef
#define
#endif
你試試重新建一個頭文件,在頭文件ABC.h
#ifndef ABC_H_
#define ABC_H_
#include "reg51.h"
#include "ABSACC.H"
#endif
然後在兩個程序里包含"ABC.h".
不知道這樣行不行。
⑸ keil一個工程文件下可以放多個.c文件嗎但是編譯時會出現錯誤,怎麼解決
當然可以,但你需要有配套的.h文件讓C文件之間可以互相調用。
例如有1.c和2.c兩個文件,1.c中有個全局變數a,有個函數void b(void),那麼就有1.h這么寫
extern char a;
void b(void);
這樣的話,如果2.c想使用a或函數b的話,在2.c的開頭加一句#include "1.h"就能用了。
⑹ keil 多編譯個文件編譯出錯
出現這個錯誤的原因在於不同的模塊中出現了重復的符號。根據錯誤提示,貌似是你的兩個.c文件里有同名的函數main,消除掉一個就可以了。
⑺ 我的KEIL為什麼一個工程下面有兩個文件,編譯就不成功
你說的項目是獨立的,是不是說這是兩個題目的程序互相之間沒有任何關系,要是這樣的,就必須建立兩個工程,各自進行編譯,是不允許把兩個程序放在一個工程中的。
⑻ keil生成的文件怎麼那麼多,分別是什麼,比如.opt .bak .plg
.plg:編譯器編譯結果
.hex和.bin:可執行文件
.map和.lst:鏈接文件
.o:目標文件
.crf、.lnp、.d和.axf:調試文件
.opt:保存工程配置信息
.bak:工程備份文件
⑼ KEIL 中關於預編譯的問題(重復包含)
「兩個源文件file1.c和file2.c都會將file.h插入進去嗎?」
不會,只插入一次。
「這樣寫不就是為了不重復包含嗎?」
對呀,你不是很明白嗎。
「如果只在兩個當中的一個插入file.h,假設file1.c,那我file2.c中用到了file.h中的函數,不是會出現未定義的錯誤嗎?」
怎麼會呢,此時這個函數對於工程而言已經被定義了呀。
用你的例子給你講解一下。開始編譯以後,假設先編譯file2.c,則file2.c會包含file.h並載入其中的所有聲明以及宏定義,包括#define _FILE_H_;編譯完file2.c後開始編譯file1.c,此時從file2.c會再次包含file.c,但因為_FILE_H_已經定義過,就不會執行判斷條件之後的頭文件內容。通過這樣的方式就能避免重復定義。
⑽ KEIL C51多文件編譯
首先主函數只能存在於一個文件中,這個文件可以直接取名mian.c這樣比較方便管理。然後按功能分其它文件,分別編寫XX.h和XX.c文件,在XX.h中寫入函數的聲明和全局變數的定義,在XX.c中寫函數的具體內容,並且在XX.c中要include「XX.h」,在mian.c中include所有的.h文件。這樣就可以正常編譯和燒寫了。最終生成的還是一個hex文件