gpt4 book ai didi

c++ - 如何在 window.h 线程中声明 bool 函数?

转载 作者:行者123 更新时间:2023-11-28 07:23:50 24 4
gpt4 key购买 nike

对于我的作业,我需要编写一个多线程程序,在一个单独的线程中输出所有小于或等于用户输入的数字的素数。

我是线程的新手,并不完全理解如何正确地实现它们。但是我创建了一个 bool 函数来确定一个整数是否为素数,并将其命名为 bool isPrime。但是,bool isPrime 给我以下错误“声明与”LPVOID isPrime“不兼容”。我不确定如何修复它,我还注意到我的编译器(visual c++)为“cout”提供了红色下划线,并且“cin”,但如果我声明使用命名空间 std,则编译器会在“std”下划线并给出此错误“名称必须是命名空间名称”,我不知道它应该是什么意思。我该如何解决这两个问题?

#include <Windows.h>

DWORD Prime;


DWORD WINAPI primeThreadFun(LPVOID isPrime)
{
bool isPrime(int n)
{
float sqrtn = sqrt(n);
if (n < 2) return false;
if (n < 4) return true;
if (n % 2 == 0) return false;
for (int d = 3; d <= sqrtn; d += 2)
if (n % d == 0) return false;
return true;
}

}

int main(int argc, char *argv [])
{
DWORD ThreadId;

HANDLE ThreadHandle;

int n;
cout << "Enter a number: " << endl;
cin >> n;
for (int i = 0; i <= n; i++)
if (isPrime(i)) cout << i << " ";
cout endl;
}

ThreadHandle = CreateThread(NULL, 0, primeThreadFun, (LPVOID) isPrime, NULL, ThreadID []);

if (ThreadHandle != NULL)
{
WaitForSingleObject(ThreadHandle INFINITE);

CloseHandle(ThreadHandle);
}

}

最佳答案

C/C++ 不支持嵌套函数——isPrime 嵌套在 primeThreadFun 中。将其移出,并从 primeThreadFun 调用它。

另外,你有一个名为“isPrime”的全局变量——你不能有那个和一个全局函数“isPrime()”

对于 cout 你需要包含“iostream”

关于c++ - 如何在 window.h 线程中声明 bool 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19056367/

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