在C++中创建多个静态对象

Nul*_*ter 3 c++ embedded arm

长话短说,我需要在函数中创建大量对象.没有复制和粘贴是否可以这样做?

基本上,我所追求的效果就是这个

class foo() { .... }

void bar()
{
    static foo obj1;
    static foo obj2;
    static foo obj3;
    ...
    ...
    static foo obj501;
}
Run Code Online (Sandbox Code Playgroud)

任何帮助深表感谢 :)

更新:看来我的动机背后的动机是必要的:)

我正在尝试创建一个测试用例来测试我们对atexit()实现的限制,以便在ARM架构上运行.限制是存在固定数量的静态对象,此时可以使用__aeabi_atexit进行注册(例如,为了论证,该数字为500).如果注册了更多对象,则该函数只返回(没有任何错误消息),导致静默失败,不是很好.现在,我已经修复了atexit()实现中的"无意义返回"位,但是需要测试修复,为了做到这一点,我需要创建至少500个静态对象.

Mar*_*som 8

复制和粘贴对于像这样的一次性测试来说并不是一个糟糕的解决方案.要对其进行优化,您应该在复制之前重新选择整个块,这样每次都会使块的大小加倍 - 您只需要8个贴剂即可达到512个对象.

下一个问题是为每个对象赋予唯一的名称.为此,我们转向低位宏:

#define STATIC_OBJECT static foo obj##__LINE__

STATIC_OBJECT;
STATIC_OBJECT;
...
Run Code Online (Sandbox Code Playgroud)