Никогда не используйте элементы структуры FILE
.
Используйте fileno(stdin)
вместо stdin->_file
.
Элемент _file
является специфичным для MinGW именем файладескриптор, в то время как fileno
является широко поддерживаемой POSIX-совместимой функцией.
Наряду с этим, вы можете захотеть #include <unistd.h>
вместо явного определения isatty
.
Если вы 'По какой-то причине мы ограничены в написании вашего кода, не ожидайте, что он будет переносимым.В противном случае это должно сработать:
#include <stdio.h>
#include <unistd.h>
long isatty_(long *lio_number)
{
int file_desc;
if (*lio_number == 5)
{
file_desc = fileno(stdin);
return isatty(file_desc);
}
else
{
return 0;
}
}
Это изменение состоит в том, что он включает unistd.h
, который предоставляет объявление для isatty
, он включает типы аргументов в определении функции и использует fileno(stdin)
вместо stdin->_file
, из которых первый гораздо более портативный.Это также улучшает форматирование, чтобы другие могли читать ваш код, если это необходимо.