作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于我的作业,我需要编写一个多线程程序,在一个单独的线程中输出所有小于或等于用户输入的数字的素数。
我是线程的新手,并不完全理解如何正确地实现它们。但是我创建了一个 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/
我是一名优秀的程序员,十分优秀!