标签: elaboration

何时使用Pragma Pure/Preelaborate

有一组通用规则/指南,可以帮助了解什么时候喜欢pragma Pure,pragma Preelaborate或别的东西完全?标准(Ada 2012)中提出的规则和定义有点沉重,我很感激阅读一些更为清晰的内容并针对普通案例.

如果我想彻底了解它的"原因",我可以简单地试试:

  • 标记包规格 pragma Pure;
  • 如果没有编译,请尝试 pragma Preelaborate;
  • 如果失败了,那么我已经做了一些棘手的事情,要么需要逐个pragma Elaborate单元,要么重新考虑包布局.withwith

虽然这可能有效(是吗?),因为建议尽可能将包标记为Pure(同样使用Preelaborate),但它看起来有点脑损伤,我更愿意更好地理解这个过程.

ada pragma elaboration

18
推荐指数
2
解决办法
4962
查看次数

为什么在C ++中的类指针声明中使用'struct'关键字

在C ++中声明类指针变量时,何时以及为什么我们应该使用'struct'关键字?

我已经在嵌入式环境中看到了这一点,所以我怀疑这是C的一种保留。我已经看到了很多有关在声明struct对象时何时使用'struct'关键字的解释,因为它与C中的名称空间相关(在这里),但是我找不到任何人在谈论为什么在声明类指针变量时可能会使用它。

例如,在CFoo.h中:

class CFoo
{
public:
    int doStuff();
};

inline Foo::doStuff()
{
    return 7;
}
Run Code Online (Sandbox Code Playgroud)

后来在另一个类中:

void CBar::interesting()
{
    struct CFoo *pCFoo;

    // Go on to do something interesting with pCFoo...
}
Run Code Online (Sandbox Code Playgroud)

c++ variables scope class elaboration

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

Ada:声明和分配开销

我对 Ada 程序中的初始化很好奇:假设我有以下程序:

procedure Foo (Bar : Integer) is
    Another_Bar : Integer := Bar;
begin
    ...
end Foo;
Run Code Online (Sandbox Code Playgroud)

分配是否应该Another_Bar具有相同的开销

procedure Foo2 (Bar : Integer) is
    Another_Bar : Integer;
begin
    Another_Bar := Bar;
    ...
end Foo;
Run Code Online (Sandbox Code Playgroud)

我的问题本质上是两个分配是否生成相同的汇编指令,因此速度相同?(没有详细说明目标机器)

initialization ada elaboration

2
推荐指数
1
解决办法
143
查看次数

标签 统计

elaboration ×3

ada ×2

c++ ×1

class ×1

initialization ×1

pragma ×1

scope ×1

variables ×1