如何在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

如何在 GNUMakefile 中包含 libxml2 库

如何在 .tsx 打字稿中包含 .css 文件?

如何在 SwiftUI 中包含和调用 BSImagePicker

如何在 ConfigurationSection 中包含简单集合

如何在 AppDelegate 中包含 NSPersistentContainer