期间在两个系统之间有一个不兼容的地方, 就是Window$下
<conio.h>
文件中的getch()
这个函数. 由于Linux下没有那个头文件, 自然也就没有这个函数了. 但这个函数又是比较重要的一个, 不好轻易改动, 于是在CSDN的某博上找到了很好的解决办法, 用着挺不错的~他自己写了个
getch()
函数, 功能上和Window$下的一样:#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <assert.h>
#include <string.h>
int getch()
{
int c = 0;
struct termios org_opts, new_opts;
int res = 0;
/*
* Store old settings.
*/
res = tcgetattr(STDIN_FILENO, &org_opts);
assert(res == 0);
/*
* Set new terminal parms.
*/
memcpy(&new_opts, &org_opts, sizeof(new_opts));
new_opts.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL | ECHOPRT | ECHOKE | ICRNL);
tcsetattr(STDIN_FILENO, TCSANOW, &new_opts);
c = getchar();
/*
* Restore old settings.
*/
res = tcsetattr(STDIN_FILENO, TCSANOW, &org_opts);
assert(res == 0);
return c;
}
Window$版的本来想用VC的编译器来弄的, 结果果然VC的编译器比较高级, 在Linux下gcc没有一个错误和警告, 到了VC下就出现了几十个错误和警告(- -). 最后没办法, 就直接用MinGW编译了, 不过运行起来没有Linux下那么稳定.
No comments:
Post a Comment