如何在cygwin中包含conio.h?
Posted
技术标签:
【中文标题】如何在cygwin中包含conio.h?【英文标题】:How to include conio.h in cygwin? 【发布时间】:2015-05-24 17:22:08 【问题描述】:我想使用 getch();在赛格温。 于是我找路,添加代码“conio.h”。
#include <termios.h>
#include <unistd.h>
#include <stdio.h>
/* reads from keypress, doesn't echo */
int getch(void)
struct termios oldattr, newattr;
int ch;
tcgetattr( STDIN_FILENO, &oldattr );
newattr = oldattr;
newattr.c_lflag &= ~( ICANON | ECHO );
tcsetattr( STDIN_FILENO, TCSANOW, &newattr );
ch = getchar();
tcsetattr( STDIN_FILENO, TCSANOW, &oldattr );
return ch;
/* reads from keypress, echoes */
int getche(void)
struct termios oldattr, newattr;
int ch;
tcgetattr( STDIN_FILENO, &oldattr );
newattr = oldattr;
newattr.c_lflag &= ~( ICANON );
tcsetattr( STDIN_FILENO, TCSANOW, &newattr );
ch = getchar();
tcsetattr( STDIN_FILENO, TCSANOW, &oldattr );
return ch;
保存此代码“conio.h”后,我无法使用 getch();。 错误信息是 致命错误:conio.h:没有这样的文件或目录 #包括 ^ 编译终止。
如何解决?
【问题讨论】:
您可以在这里找到多种解决方案:unix.stackexchange.com/questions/126842/… 【参考方案1】:任何其他想要使用您的 conio.c 文件中的函数(应该是您发布的文件的适当文件扩展名)的文件都需要有这些函数的原型。
具体来说,您需要第二个文件 conio.h,如下所示;
#ifndef CONIO_H
#define CONIO_H
int getch( void );
int getche( void );
#endif // CONIO_H
conio.h 文件必须是#include "conio.h" 在任何想要使用这些功能的文件中
【讨论】:
当然,编译器需要应用到conio.c和你的文件,并且链接器需要同时包含conio.o和yourfile.o,这样conio.h文件才能在编译过程中被找到编译步骤,编译器需要知道conio.h文件的路径。 (在 gcc 中使用 -IpathToHeaderFile)以上是关于如何在cygwin中包含conio.h?的主要内容,如果未能解决你的问题,请参考以下文章
linux系统中,编写的C程序调用conio.h,但不行。出现下图提示,这要如何解决呢,怎么才可以调用到conio.h
如何在 SwiftUI 中包含和调用 BSImagePicker