Как включить conio.h в cygwin?

Я хочу использовать 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: Нет такого файла или каталога #include ^ компиляция прекращена.

Как это решить?


person PARK    schedule 24.05.2015    source источник
comment
Здесь вы можете найти несколько решений: unix.stackexchange. ком/вопросы/126842/   -  person victor175    schedule 24.05.2015


Ответы (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" в любом файле, который хочет использовать эти функции.

person user3629249    schedule 24.05.2015
comment
Естественно, компилятор должен быть применен к conio.c и вашему файлу, а компоновщик должен включать и conio.o, и yourfile.o, чтобы файл conio.h был найден на этапе компиляции, компилятор должен знать путь к файлу conio.h. (в gcc используйте -IpathToHeaderFile) - person user3629249; 24.05.2015