#include <Windows.h>
#include <stdio.h>
#include <stdlib.h> MSG Msg; while (GetMessage(&Msg, NULL, 0, 0) > 0 ) { TranslateMessage(&Msg); printf("hello world \n"); DispatchMessage(&Msg);
}
(Запуск обновления для Windows 10 Creator)
Кто-нибудь знает, почему этот prinf
не работает?
Похоже на тривиальную вещь, которую нужно суетиться, но я делаю это по нити, и отсутствие возможности printf
полностью отбросило меня. Мне очень любопытно узнать внутренние детали относительно того, почему мой стандартный вывод игнорируется - и как это делают окна.
EDIT 1
Я запуск программы на cmd.exe
- с помощью ConEmu
.
EDIT 2
Это скрипт сборки
C:\mingw64\mingw64\bin\gcc.exe -Wall -g -O2 -c -o main.o main.c
C:\mingw64\mingw64\bin\gcc.exe -Wall -g -shared -o main main.o
ИЗМЕНИТЬ 3
Дело в том, что вы:
printf("hello world 1 \n"); while (GetMessage(&Msg, NULL, 0, 0) > 0 ) { printf("hello world 2\n"); TranslateMessage(&Msg); DispatchMessage(&Msg);
}
Первое сообщение hello world 1
печатает, а второе hello world 2
не работает!
Это похоже на вызовы windows API
делает внешние изменения в моей среде выполнения: (
GetMessage
будет ждать оконное сообщение из окна, связанного с текущим потоком. Ожидание неопределенное, если нет сообщения или нет окна.Если у вас есть окно и создается сообщение,
printf
будет вызван как ожидалось. Но вы не должны помещатьprintf
в цикл сообщений. Вместо этого ответьте на конкретное сообщение в процедуре окна.