标签: c++

编译用于高放射性环境的应用程序

我们正在编译嵌入式C/C++应用程序,该应用程序部署在受电离辐射轰击的环境中的屏蔽设备中.我们正在使用GCC和ARM进行交叉编译.部署后,我们的应用程序会生成一些错误的数据,并且比我们想要的更频繁地崩溃.硬件专为此环境而设计,我们的应用程序已在此平台上运行了数年.

我们可以对代码进行更改,还是可以进行编译时改进,以识别/纠正由单个事件干扰引起的软错误和内存损坏?是否有其他开发人员能够成功地减少软错误对长期运行的应用程序的有害影响?

c c++ embedded gcc fault-tolerance

1414
推荐指数
20
解决办法
11万
查看次数

什么是C++ 11中的lambda表达式?

什么是C++ 11中的lambda表达式?我什么时候用?他们解决了哪些问题在引入之前是不可能的?

一些示例和用例将是有用的.

c++ lambda c++-faq c++11

1408
推荐指数
7
解决办法
45万
查看次数

用64位替换32位循环计数器会引入疯狂的性能偏差

我一直在寻找最快的方法来处理popcount大数据.我遇到了一个很奇怪的效果:改变从循环变量unsigneduint64_t50%在我的电脑上所做的性能下降.

基准

#include <iostream>
#include <chrono>
#include <x86intrin.h>

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

    using namespace std;
    if (argc != 2) {
       cerr << "usage: array_size in MB" << endl;
       return -1;
    }

    uint64_t size = atol(argv[1])<<20;
    uint64_t* buffer = new uint64_t[size/8];
    char* charbuffer = reinterpret_cast<char*>(buffer);
    for (unsigned i=0; i<size; ++i)
        charbuffer[i] = rand()%256;

    uint64_t count,duration;
    chrono::time_point<chrono::system_clock> startP,endP;
    {
        startP = chrono::system_clock::now();
        count = 0;
        for( unsigned k = 0; k < …
Run Code Online (Sandbox Code Playgroud)

c++ performance x86 assembly compiler-optimization

1370
推荐指数
9
解决办法
15万
查看次数

什么是右值,左值,x值,glvalues和prvalues?

在C++ 03中,表达式是rvaluelvalue.

在C++ 11中,表达式可以是:

  1. 右值
  2. 左值
  3. x值
  4. glvalue
  5. prvalue

两类已成为五大类.

  • 这些新的表达类别是什么?
  • 这些新类别如何与现有的左值和左值类别相关联?
  • C++ 0x中的右值和左值类别是否与它们在C++ 03中的相同?
  • 为什么需要这些新类别?是WG21神只是想迷惑我们凡人?

c++ expression c++-faq c++11

1291
推荐指数
13
解决办法
17万
查看次数

const int*,const int*const和int const*之间有什么区别?

我总是搞砸了怎么用const int*,const int * constint const *正确的.是否有一套规则来定义您能做什么和不能做什么?

我想知道在任务,传递到职能等方面所做的所有事情和所有不应做的事情.

c c++ int pointers const

1262
推荐指数
15
解决办法
47万
查看次数

为什么我们需要C++中的虚函数?

我正在学习C++而我正在进入虚拟功能.

根据我的阅读(在书中和在线),虚函数是基类中的函数,您可以在派生类中重写它们.

但是在本书前面,当我学习基本继承时,我能够在不使用的情况下覆盖派生类中的基本函数virtual.

那我在这里错过了什么?我知道虚拟功能还有更多功能,而且它似乎很重要,所以我想清楚它究竟是什么.我在网上找不到直接答案.

c++ virtual-functions

1223
推荐指数
18
解决办法
52万
查看次数

我必须在何处以及为何要使用"模板"和"typename"关键字?

在模板,在那里,为什么我必须把typenametemplate上依赖的名字呢?究竟什么是依赖名称?我有以下代码:

template <typename T, typename Tail> // Tail will be a UnionNode too.
struct UnionNode : public Tail {
    // ...
    template<typename U> struct inUnion {
        // Q: where to add typename/template here?
        typedef Tail::inUnion<U> dummy; 
    };
    template< > struct inUnion<T> {
    };
};
template <typename T> // For the last node Tn.
struct UnionNode<T, void> {
    // ...
    template<typename U> struct inUnion {
        char fail[ -2 + (sizeof(U)%2) ]; // Cannot be instantiated for any …
Run Code Online (Sandbox Code Playgroud)

c++ templates c++-faq dependent-name typename

1061
推荐指数
8
解决办法
15万
查看次数

可以在其范围之外访问局部变量的内存吗?

我有以下代码.

#include <iostream>

int * foo()
{
    int a = 5;
    return &a;
}

int main()
{
    int* p = foo();
    std::cout << *p;
    *p = 8;
    std::cout << *p;
}
Run Code Online (Sandbox Code Playgroud)

而代码只是运行而没有运行时异常!

输出是 58

怎么会这样?本地变量的内存不能在其功能之外无法访问吗?

c++ memory-management local-variables dangling-pointer

990
推荐指数
19
解决办法
26万
查看次数

C++ 17中有哪些新功能?

C++ 17现在功能齐全,因此不太可能经历大的变化.为C++ 17提出了数百个提案.

在C++ 17中,哪些特性被添加到C++中?

当使用支持"C++ 1z"的C++编译器时,当编译器更新到C++ 17时,哪些功能可用?

c++ standards c++-faq c++17

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

未定义的行为和序列点

什么是"序列点"?

未定义的行为和序列点之间的关系是什么?

我经常使用有趣和复杂的表达方式a[++i] = i;,让自己感觉更好.我为什么要停止使用它们?

如果您已阅读此内容,请务必访问后续问题重新加载未定义的行为和序列点.

(注意:这是Stack Overflow的C++常见问题解答的一个条目.如果你想批评在这种形式下提供常见问题解答的想法,那么发布所有这些的元数据的发布将是这样做的地方.这个问题在C++聊天室中受到监控,其中FAQ的想法一开始就出现了,所以你的答案很可能被那些提出想法的人阅读.)

c++ c++-faq undefined-behavior sequence-points

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