小编Let*_*_Be的帖子

期货与承诺

我把自己与未来和承诺之间的区别混淆了.

显然,他们有不同的方法和东西,但实际的用例是什么?

是吗?:

  • 当我管理一些异步任务时,我使用future来"获取未来"的价值
  • 当我是异步任务时,我使用promise作为返回类型,以允许用户从我的承诺中获得未来

c++ future promise c++11

124
推荐指数
1
解决办法
5万
查看次数

如何更新我的裸仓库?

我创建了一个裸仓库来发布我的存储库,但我无法弄清楚如何使用主存储库的当前状态更新裸仓库.

git

122
推荐指数
5
解决办法
8万
查看次数

为什么C++ 11有`make_shared`而不是`make_unique`

可能重复:
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++ c++11

50
推荐指数
1
解决办法
3万
查看次数

C++ 11 STL容器和线程安全

我无法找到有关此信息的最新信息.

C++ 11版本的STL容器是否保证了一定程度的线程安全性?

由于性能原因,我确实希望他们不这样做.但话说回来,这就是为什么我们同时拥有std::vector::operator[]std::vector::at.

c++ multithreading stl c++11

40
推荐指数
2
解决办法
3万
查看次数

有没有办法打开perl中的跟踪(相当于bash -x)?

我在perl中有一个系统脚本.我需要一些等效的bash -x来确定脚本出了什么问题.有没有相当的东西?

编辑:bash -x的作用是它在评估时打印每一行.这使得调试代码只是缺少一些路径变量或文件非常容易.

debugging perl trace

36
推荐指数
3
解决办法
2万
查看次数

用于C和C++函数签名的便携式UNUSED参数宏

我有兴趣创建一个用于消除未使用的变量警告的宏.

此问题描述了一种通过在函数代码中编写宏来抑制未使用的参数警告的方法:

通用的编译器独立方式在C/C++中实现UNUSED宏

但是我对可以在函数签名中使用的宏感兴趣:

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++的解决方案是不可接受的.

c c++ macros warnings

34
推荐指数
4
解决办法
4万
查看次数

Eclipse用于C和C++开发的替代方案?

我一直在使用Eclipse进行C和C++开发.不幸的是Eclipse有它的缺点(速度,糟糕的集成控制台,以及一些不时出现的错误).

对于C++开发,Qt Creator是一个非常好的选择,但我需要C和C++的东西.

我真的不需要IDE的集成部分(我不需要集成的项目管理器,编译器或debuger).我需要的是代码导航.Eclipse提供了一个很棒的功能"结构元素的调用图",这在我需要修改大型代码库时是无与伦比的(这是我大部分时间都在做的).

代码完成和至少一些集成文档(doxygen,函数之前的通用注释,系统文档)是绝对必要的.

哦,IDE必须是跨平台的.

Eclipse还有其他东西吗?

c c++ eclipse ide cross-platform

32
推荐指数
8
解决办法
2万
查看次数

使用GCC一起编译C和C++文件

我正在尝试使用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 c++ gcc

31
推荐指数
3
解决办法
4万
查看次数

C++中的易失性11

在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中不推荐使用的问题,因为机器模型是多线程的,因此编译器应该考虑对系统中存在的变量的并发访问.

c++ volatile c++11

27
推荐指数
1
解决办法
1万
查看次数

__func__或__FUNCTION__或手动const char*id?

我想知道它有多广泛__func__(C99的一部分,但我正在编译为C89)并__FUNCTION__得到支持.

我有一个旧的代码库,主要使用手动const char* id;变量,然后传递给各种(主要是日志记录)功能.我想摆脱这个并将函数名称移动到宏中.

c

23
推荐指数
2
解决办法
9909
查看次数

标签 统计

c++ ×7

c ×4

c++11 ×4

cross-platform ×1

debugging ×1

eclipse ×1

future ×1

gcc ×1

git ×1

ide ×1

macros ×1

multithreading ×1

perl ×1

promise ×1

stl ×1

trace ×1

volatile ×1

warnings ×1