gpt4 book ai didi

c - 为什么我会收到运行时错误

转载 作者:行者123 更新时间:2023-12-01 13:58:37 27 4
gpt4 key购买 nike

您好,我在 Windows XP 中使用 Code::Blocks。当我运行这个程序时,我收到一个运行时错误,因为 "drawing operation was attempted when there was no current window".我想知道为什么会这样。

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <windows.h>
#include <conio.h>
void *print_message_function( void *ptr );

main()
{
pthread_t thread1, thread2;
char *message1 = "Thread 1";
char *message2 = "Thread 2";
int iret1, iret2;

iret1 = pthread_create( &thread1, NULL, print_message_function, (void*) message1);
iret2 = pthread_create( &thread2, NULL, print_message_function, (void*) message2);

pthread_join( thread1, NULL);
pthread_join( thread2, NULL);

printf("Thread 1 returns: %d\n",iret1);
printf("Thread 2 returns: %d\n",iret2);

exit(0);
}

void *print_message_function( void *ptr )
{
char *message;
char hello;
for(;;)
{
message = (char *) ptr;
printf("%s \n", message);
Sleep(1000);
// break;


fflush(stdin);
/*drawing operation was attempted when there was no current window*/
//The happens from next line onwords
if(kbhit())
{
hello = getchar();
printf("The interrupt %d", hello);
}
}

}

最佳答案

您的程序有一个未定义的行为
不允许在 stdin 上调用 fflush(),这是一种未定义的行为。它只允许在标准输出流 stdout 上调用。
这可能是也可能不是您观察到的行为的直接原因,但由于它是您永远不知道的未定义行为...

C99 标准 7.19.5.2/2:

If stream points to an output stream or an update stream in which the most recent operation was not input, the fflush function causes any unwritten data for that stream to be delivered to the host environment to be written to the file; otherwise, the behavior is undefined

关于c - 为什么我会收到运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10753271/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com