1. 程式人生 > >Keil C51對C語言的關鍵詞擴充套件之二: alien

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 C51C語言關鍵詞擴充套件 alien

alien關鍵詞主要是為了C51編譯器與PL/M-51編譯器相容。 在C51編譯器中呼叫PL/M-51函式,須使用alien宣告該函式,如下: extern alien char plm_func (int, char); char c_func (void) {

Keil C51C語言關鍵詞擴充套件 far

far的出現,是Keil 編譯器為了支援新出現的8051家族增強型MCU,這些增強型MCU可能擁有大於64KB的儲存器。使用far可訪問擴充套件的RAM,使用const far可訪問擴充套件的ROM。 NXP 51MX架構51微控制器提供通過通用指標訪問多達8MB的code

Keil C51C語言關鍵詞擴充套件十三: sfr

sfr用來定義特殊功能暫存器。用法如下: sfr name = address; name 為暫存器名字 address 為暫存器的地址 示例: sfr P0 = 0x80; /* P0口,地址為0x80 */ sfr P1 = 0x90;/* P1口,地址為0x90

Keil C51C語言關鍵詞擴充套件 code

code 指定儲存位置位於程式儲存器。程式儲存器只讀,因此code型別的變數,是無法再次賦值的。 unsigned char code ary[ ] = :"Read only"; /* 陣列ary位於程式儲存器 */ ary[0]='a'; /* 錯誤,不可修改*/

Keil C51C語言關鍵詞擴充套件 pdata

外部ram通過一個地址指標暫存器來間接訪問,讀寫效率要低於內部ram。 外部ram容量最大可位64KB。 Keil C51提供兩種外部資料儲存方式,pdata和xdata。 1)xdata儲存型別,指示變數可儲存在外部ram 64KB地址範圍內任意位置。large記憶體模型

Keil C51C語言關鍵詞擴充套件十一: xdata

xdata宣告的變數位於外部ram 64KB地址範圍內某一位置。 程式示例: unsigned int xdata m=0; /* 宣告一個全域性變數,可位於外部ram 64KB地址範圍內任意位置,由

Keil C51C語言關鍵詞擴充套件 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)聯編:在編譯階段進行聯接。即是在編譯階段將一個函數的調用點和函數