1樓:
我們的c語言有個進化版,叫c++,這個想必樓主知道,keil mdk是支援c++程式設計的,也就是說,你可以用c語言或者c++寫你的程式,都可以。
但是,有一個問題,就是標頭檔案的問題,c語言寫的標頭檔案c++是不認識的,需要轉換一下,這個轉換的方法就是加上extern "c"
#ifdef __cplusplus
extern "c" {
}這句話意思是,如果你定義了「__cplusplus」這個巨集,說明你的意圖是想在c++檔案中呼叫這個標頭檔案,我前頭說了,c語言的標頭檔案c++是不認識的,怎麼辦呢,就加上
extern "c" {。。。。。}
告訴c++檔案,大括號裡面的東西是用c語言寫的,然後c++檔案就認識了,就能呼叫這個標頭檔案裡的東西了,
extern "c" {
}的存在,使得c語言和c++能更好的結合的一塊。
另外,樓主的問題是錯誤的,不管什麼微控制器,他們只識別二進位制語言,至於你的高階語言用什麼編寫,那要看你的編譯或者編輯環境支援與否,比如arm,可以扶持c,c++,而c51編譯器並不支援c++,所以c51編譯器只能把c語言翻譯成最終的二進位制語言,不能翻譯c++
2樓:幻竹軒
extern 是用來宣告全域性變數的,在多個檔案中呼叫變數必須用 extern
3樓:匿名使用者
extern "c" 是用來相容c++的
51微控制器不可以用c++編寫程式
51微控制器怎麼把多個子程式做成標頭檔案,然後呼叫
4樓:
標準的做法:
timer.c 裡面包含了函式宣告,全域性變數,函式體,timer.h 裡面使用#ifndef 語句,並且將外部需要使用的變數或函式加extern;
例:timer.c:
#include "timer.h"
int timercnt;
int timerstatu;
void timerstart();
void timerstop();
void timerinit();
void timerstart()
{}void timerstop()
{}void timerinit()
timer.h:
#ifndef __timer_h_
#define __timer_h_
//如果外部需要使用這些變數或函式,直接包含標頭檔案即可。
//如果不對外開放的函式,就不需要新增
//注:在c原始檔中,函式宣告要補全
extern int timercnt;
extern int timerstatu;
extern void timerstart();
extern void timerstop();
extern void timerinit();
#endif
5樓:壕銘爽
你可以寫一個標頭檔案,比如說之類的,開始寫51程式的時候,#include 就可以放進去了,這條語句相當於這個檔案。你可以把它放在任意的路徑,最好是和一個資料夾,方便直接用,就不用每次使用都要查詢它的路徑了。希望能夠幫到你
6樓:
多個子程式寫到一個原始檔中啊,弄個main.c原始檔呼叫標頭檔案跑下就好了啊
7樓:匿名使用者
樓主解決問題了嗎?同問
51微控制器c語言程式設計標頭檔案的問題
矮子根 不知你是怎麼弄的,我照你的樣式重複了一遍也沒有報錯,請照下圖認真檢查 另外注意 你在兩個檔案裡定義的beep 和 beep 是不一樣的,這才是錯誤的原因。 這個告警是告訴你沒有實現函式吧。你應該把這個函式的主體在.c裡實現。 微控制器的戰鬥機 你看看定義的函式名一樣嗎? 對於c語言的標頭檔案...
51微控制器程式燒寫的原理是什麼,微控制器的燒寫原理
理解這個原理需要知道幾個知識點 微控制器內部是有程式的,是出廠時固化在硬體中,使用者無法修改的 這也會被認為它內部沒有程式 這些程式可以呼叫各種通訊介面 內部儲存器等 程式設計協議 一般大廠都會公開的,在晶片的專用技術手冊中會有 儲存器 有很多種,掩膜,eprom,eerom,flash等壽命不一樣...
微控制器裡的DPTR和PC分別代表什麼
dptr資料指標 資料指標 dptr 是某些微控制器中一個功能比較特殊的暫存器,是一個16位的特殊功能暫存器,其高位位元組暫存器用dph表示,低位位元組暫存器用dpl表示,dptr既可以作為一個16位的暫存器來處理,也可以作為兩個獨立的8位暫存器來使用。主要功能是存放16位地址,作為片外ram定址用...