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即可。