目录
文章目录
前文列表
实现跨平台的可移植性
使用预处理器来解决程序跨平台的可移植性(Portability)问题。
预处理器(CPP)也是一个程序,它在真正编译程序之前运行,所以称之为预处理或预编译器。预处理器的应用场景之一就是检测当前的代码在哪个操作系统中运行,从而来产生与平台相关的代码。而这也正是我们做可移植性工作时所需要的。
这里使用预处理器指令来判断,如果程序运行在 Windows 上,则伪造一个 readline 和 add_history 函数;而在其他操作系统上运行则直接使用 readline 函数库提供的函数。
#include <stdio.h>
#include <stdlib.h>
/*
* 如果程序运行在 Windows 上,则伪造一个 readline 和 add_history 函数。
*/
#ifdef _WIN32
#include <string.h>
static char buffer[2048];
char *readline(char *prompt) {
fputs(prompt, stdout);
fgets(buffer, 2048, stdin);
char *cpy = malloc(strlen(buffer ) + 1);
strcpy(cpy, buffer);
cpy[strlen(cpy) - 1] = '\0';
return cpy;
}
void add_history(char *unused) {}
#else
#include <readline/readline.h>
#include <readline/history.h>
#endif
int main(int argc, char *argv[]) {
puts("Lispy Version 0.1");
puts("Press Ctrl+c to Exit\n");
while(1) {
char *input = NULL;
input = readline("lispy> ");
add_history(input);
printf("You're a %s\n", input);
free(input);
}
return 0;
}
来源:oschina
链接:https://my.oschina.net/u/4386848/blog/3222731