Включение stdio при вызове WriteConsole приводит к ошибке
#include <stdio.h>
#include <windows.h>
using namespace std;
int main() {
char s[] = "Hello\n";
HANDLE stdout = GetStdHandle(STD_OUTPUT_HANDLE);
unsigned long cChars;
WriteConsole(stdout, s, lstrlen(s), &cChars, NULL);
}
результат: error: declaration of '_iob' as array of references
но когда я закомментирую stdio.h
, компилируется нормально. Что здесь не так?
Компилятор MinGW.
2 ответа
Решение
В зависимости от платформы, stdout, вероятно, является макросом, поэтому лучше не использовать это имя. замещать
HANDLE stdout = ...
с
HANDLE out = ...
а потом
WriteConsole(out, ...
stdout определен в stdio.h, поэтому он терпит неудачу только тогда, когда этот файл включен. Но, чтобы быть в безопасности, никогда не используйте это имя для любой определенной пользователем переменной.
Стандартный вывод уже определен системой.. попробуйте изменить его на _stdout или что-то еще