我把自己与未来和承诺之间的区别混淆了.
显然,他们有不同的方法和东西,但实际的用例是什么?
是吗?:
可能重复:
make_unique和完美转发
为什么C++ 11有make_shared模板,但不是make_unique模板?
这使得代码非常不一致.
auto x = make_shared<string>("abc");
auto y = unique_ptr<string>(new string("abc"));
Run Code Online (Sandbox Code Playgroud) 我无法找到有关此信息的最新信息.
C++ 11版本的STL容器是否保证了一定程度的线程安全性?
由于性能原因,我确实希望他们不这样做.但话说回来,这就是为什么我们同时拥有std::vector::operator[]和std::vector::at.
我在perl中有一个系统脚本.我需要一些等效的bash -x来确定脚本出了什么问题.有没有相当的东西?
编辑:bash -x的作用是它在评估时打印每一行.这使得调试代码只是缺少一些路径变量或文件非常容易.
我有兴趣创建一个用于消除未使用的变量警告的宏.
此问题描述了一种通过在函数代码中编写宏来抑制未使用的参数警告的方法:
但是我对可以在函数签名中使用的宏感兴趣:
void callback(int UNUSED(some_useless_stuff)) {}
这就是我用谷歌挖出来的(来源)
#ifdef UNUSED
#elif defined(__GNUC__)
# define UNUSED(x) UNUSED_ ## x __attribute__((unused))
#elif defined(__LCLINT__)
# define UNUSED(x) /*@unused@*/ x
#elif defined(__cplusplus)
# define UNUSED(x)
#else
# define UNUSED(x) x
#endif
Run Code Online (Sandbox Code Playgroud)
这可以进一步扩展到其他编译器吗?
编辑:对于那些无法理解标记如何工作的人:我想要一个C和C++的解决方案.这就是为什么这个问题被标记为C和C++的原因,这就是为什么只有C++的解决方案是不可接受的.
我一直在使用Eclipse进行C和C++开发.不幸的是Eclipse有它的缺点(速度,糟糕的集成控制台,以及一些不时出现的错误).
对于C++开发,Qt Creator是一个非常好的选择,但我需要C和C++的东西.
我真的不需要IDE的集成部分(我不需要集成的项目管理器,编译器或debuger).我需要的是代码导航.Eclipse提供了一个很棒的功能"结构元素的调用图",这在我需要修改大型代码库时是无与伦比的(这是我大部分时间都在做的).
代码完成和至少一些集成文档(doxygen,函数之前的通用注释,系统文档)是绝对必要的.
哦,IDE必须是跨平台的.
Eclipse还有其他东西吗?
我正在尝试使用GCC一起编译C和C++源代码.
gcc -std=c++0x test.cpp -std=c99 test.c -lstdc++
现在,这个工作正常,除了我得到两个警告.
cc1plus: warning: command line option "-std=c99" is valid for C/ObjC but not for C++
cc1: warning: command line option "-std=c++0x" is valid for C++/ObjC++ but not for C
Run Code Online (Sandbox Code Playgroud)
因此我无法使用-Werror此设置.这些警告能以某种方式被抑制吗?
在C++ 11标准中,机器模型从单线程机器变为多线程机器.
这是否意味着static int x; void func() { x = 0; while (x == 0) {} }优化输出读取的典型示例将不再发生在C++ 11中?
编辑:对于那些不知道这个例子的人(我非常惊讶),请阅读:https://en.wikipedia.org/wiki/Volatile_variable
EDIT2:好的,我真的很期待所有知道volatile这个例子的人.
如果您使用示例中的代码,则循环中读取的变量将被优化,使循环无限.
解决方案当然是使用volatile它会强制编译器在每次访问时读取变量.
我的问题是,如果这是C++ 11中不推荐使用的问题,因为机器模型是多线程的,因此编译器应该考虑对系统中存在的变量的并发访问.
我想知道它有多广泛__func__(C99的一部分,但我正在编译为C89)并__FUNCTION__得到支持.
我有一个旧的代码库,主要使用手动const char* id;变量,然后传递给各种(主要是日志记录)功能.我想摆脱这个并将函数名称移动到宏中.