orl*_*bjr 4 namespaces thread-sleep c++11 visual-studio-2012
我的标题:
#include <chrono>
#include <thread>
#include <iostream>
#include <string>
#include <fstream>
#include "include\curses.h"
Run Code Online (Sandbox Code Playgroud)
我的代码问题:
std::this_thread::sleep_for(std::chrono::milliseconds(500));
Run Code Online (Sandbox Code Playgroud)
我的错误:
错误 C3083:“this_thread”:“::”左侧的符号必须是类型
这对我来说毫无意义!?添加了所需的每个标题。Intellisense(我在 VS2012 上)检测引用和参数。它只是不会编译。
其他相关错误
*错误 C2039:“sleep_for”:不是“std”的成员*
*错误 C3861:“sleep_for”:未找到标识符*
我刚刚遇到了类似的问题 - VS Intellisense 对我的代码没有问题,但是我在构建时遇到了与您相同的错误,不仅在 VS 中,而且在 GCC 中也是如此。(不是 VS 错误)
我遇到的一个大问题是2 个标题相互包含。本质上,因为一个文件包含另一个文件,而另一个文件依赖于第一个文件,所以您可能会出现一些奇怪的行为。
您肯定知道,标题通常在顶部有#ifndef,它包含标题的全部内容,因此它不能被多次包含。这至少使我们免于陷入无限的包含循环,尽管我们仍然有问题。
当第二个被包含时,它引用了第一个,但第一个已经定义,所以第一个没有包含在第二个中,然后第二个标头中的代码被复制到第一个包含它的地方。因为第二个标头包含在它需要的函数之上,你会得到关于没有定义的东西的错误,甚至命名空间不存在(因为这些是在第二个插入到第一个顶部之后才定义的。)
这里有2个解决方案:
在我的例子中,因为我只依赖第一个文件的一个小函数,所以我选择通过手动内联第二个文件中的代码来简单地删除一个依赖项。
您还应该能够为您想要使用的函数添加原型,因此如果一个原型包含在另一个下面,您至少有一个原型告诉编译器“这将在稍后定义,相信我它存在”。
我发现发生了什么的方法是将问题标题移到包含列表中的所有其他标题之上,这揭示了更多错误,其中许多是相似的,但现在困扰着另一个包含。
我不完全确定为什么using namespace对你有用,但我能想到的是,这个 using 语句至少告诉编译器将名称视为命名空间而不是一些未定义的东西,因此关于你的命名空间不是类型的错误.
| 归档时间: |
|
| 查看次数: |
9359 次 |
| 最近记录: |