Keil C51對C語言的關鍵詞擴充套件之二: alien
alien關鍵詞主要是為了C51編譯器與PL/M-51編譯器相容。
在C51編譯器中呼叫PL/M-51函式,須使用alien宣告該函式,如下:
extern alien char plm_func (int, char); char c_func (void) { int i; char c; for (i = 0; i < 100; i++) { c = plm_func (i, c); /* call PL/M func */ } return (c); }為了建立能被PL/M-51程式呼叫的C51函式,須使用alien關鍵詞宣告,如下:
alien char c_func (char a, int b) { return (a * b); }
PL/M-51函式的返回值和引數型別可為bit,char,unsigned char,int,unsigned int。C51中alien宣告的函式也可使用其他型別如long,float,以及各種型別指標。
須要注意的是,PL/M-51並不能直接支援32位整型數和浮點數。
在C51程式中呼叫PL/M-51定義的全域性變數,只需像呼叫C51外部變數一樣宣告extern即可。
相關推薦
Keil C51對C語言的關鍵詞擴充套件之二: alien
alien關鍵詞主要是為了C51編譯器與PL/M-51編譯器相容。 在C51編譯器中呼叫PL/M-51函式,須使用alien宣告該函式,如下: extern alien char plm_func (int, char); char c_func (void) {
Keil C51對C語言的關鍵詞擴充套件之八: far
far的出現,是Keil 編譯器為了支援新出現的8051家族增強型MCU,這些增強型MCU可能擁有大於64KB的儲存器。使用far可訪問擴充套件的RAM,使用const far可訪問擴充套件的ROM。 NXP 51MX架構51微控制器提供通過通用指標訪問多達8MB的code
Keil C51對C語言的關鍵詞擴充套件之十三: sfr
sfr用來定義特殊功能暫存器。用法如下: sfr name = address; name 為暫存器名字 address 為暫存器的地址 示例: sfr P0 = 0x80; /* P0口,地址為0x80 */ sfr P1 = 0x90;/* P1口,地址為0x90
Keil C51對C語言的關鍵詞擴充套件之五: code
code 指定儲存位置位於程式儲存器。程式儲存器只讀,因此code型別的變數,是無法再次賦值的。 unsigned char code ary[ ] = :"Read only"; /* 陣列ary位於程式儲存器 */ ary[0]='a'; /* 錯誤,不可修改*/
Keil C51對C語言的關鍵詞擴充套件之十: pdata
外部ram通過一個地址指標暫存器來間接訪問,讀寫效率要低於內部ram。 外部ram容量最大可位64KB。 Keil C51提供兩種外部資料儲存方式,pdata和xdata。 1)xdata儲存型別,指示變數可儲存在外部ram 64KB地址範圍內任意位置。large記憶體模型
Keil C51對C語言的關鍵詞擴充套件之十一: xdata
xdata宣告的變數位於外部ram 64KB地址範圍內某一位置。 程式示例: unsigned int xdata m=0; /* 宣告一個全域性變數,可位於外部ram 64KB地址範圍內任意位置,由
Keil C51對C語言的關鍵詞擴充套件之六: compact
函式的引數和區域性變數儲存在記憶體模型指定的預設區域內。 我們可以通過small,compact 或large 指定一個函式使用何種記憶體模型。 #pragma small /* 預設記憶體模型為small*/ extern int calc (char
C++語言筆記系列之二十——模版
輸出 類模板 pos 有一個 class 初始 個數 創建對象 example 1.隨意輸入兩個數x和y,輸出最大值max。 int max(int x, int y) {return x>y?x:y;} 2.函數模版 (1)用一種或者多
C語言知識結構之二
等等 深入 代碼 技術 研究 pop tex dsm 其他 C語言的知識結構整理成思維導圖,例如以下圖所看到的: 這張圖的總體思路是: 用C敲代碼。該學會什麽? 要用C寫的更好,改學會什麽? 事實上。僅僅要是分層的知識結構,大致的思路是:
C++11併發學習之二:執行緒管理
1.啟動執行緒 (1)使用物件 “小試牛刀”中thread構造時傳入的是函式,還可以傳入物件。 #include <thread> #include <iostream> void func() { std::cout<<
Objective-C Runtime 執行時之二:成員變數與屬性
在前面一篇文章中,我們介紹了Runtime中與類和物件相關的內容,從這章開始,我們將討論類實現細節相關的內容,主要包括類中成員變數,屬性,方法,協議與分類的實現。 本章的主要內容將聚集在Runtime對成員變數與屬性的處理。在討論之前,我們先介紹一個重要的概念:型別
C#基礎拾遺系列之二:使用ILSpy探索C#7.0新增功能點
第一部分: C#是一種通用的,型別安全的,面向物件的程式語言。有如下特點: (1)面向物件:c# 是面向物件的範例的一個豐富實現, 它包括封裝、繼承和多型性。C#面向物件的行為包括: 統一的型別系統 類與介面 屬性、方法、事件 (2)型別安全:C#還允許通過dynamic關鍵字動態
【C語言簡單說】二:第一個C語言程式詳解(1)
如有錯誤請給與糾正… 上一個教程只說明瞭第一個C語言程式原始碼中的: printf("Hello Wrold!"); 這行程式碼的含義,現在我們來說說全部程式碼;當然為了各位的方便,我就把那個程式
c++實現檔案傳輸之二:功能實現
在上一篇中,我們以經介紹了程式的流程和框架,在本篇將詳細討論各個功能的實現主要包括1.獲取磁碟資訊2.獲取目錄資訊3.獲取檔案資訊4.執行指定檔案5.刪除指定檔案6.刪除指定目錄7.建立指定目錄8.上傳下載檔案9.獲取遠端檔案圖示獲取磁碟資訊磁碟資訊可以用API GetDri
objective-c runtime安全措施之二:反注入
《O'Reilly.Hacking.and.Securing.iOS.Applications>>讀書筆記 反注入:在類函式被呼叫前做完整性檢測(預防應用自定義函式或apple標準庫函式被修改或替換) 原理:呼叫dladdr()函式檢查類方法的基本資訊是否合法
C51對標準C語言的擴充套件 -- 資料型別
--------------------------------------------- -- 時間:2018-11-22 -- 建立人:Ruo_Xiao -- 郵箱:[email protected] ----------------------------------------
c51和一般c語言的不同之處
c語言和c51大部分的地方都是相同的,他們的語句,結構,順序都是很相似的,只是c51相比與c語言,多了很多變數型別和其他的東西,下面是總結c語言和c51的一些不同之處。 變數型別 位變數
C語言數組之冒泡排序+折半查找法(二分查找)
不存在 次數 存在 是否 .com int count 結束 如果 冒泡排序算法 1 int num[5]; 2 int i; 3 //循環接收用戶輸入的元素 4 for(i=0;i<5;i++){ 5 pr
C語言的陷阱之typedef
c語言的陷阱之typedeftypedef是一個關鍵字,可以重命名一些數據類型也可以重定義一些新的數據類型。我們從以下幾個角度去理解typedef。1.typedef和普通數據類型類型typedef int MYINT;int a = 10; MYINT B = 20;123123我們給int重命名成MYIN
C++語言筆記系列之十八——虛函數(1)
自己 語言 數據類型 說明 出現 adium 重定義 angle rac 1.C++中的多態 (1)多態性:同一個函數的調用能夠進行不同的操作,函數重載是實現多態的一種手段。 (2)聯編:在編譯階段進行聯接。即是在編譯階段將一個函數的調用點和函數