有一组通用规则/指南,可以帮助了解什么时候喜欢pragma Pure
,pragma Preelaborate
或别的东西完全?标准(Ada 2012)中提出的规则和定义有点沉重,我很感激阅读一些更为清晰的内容并针对普通案例.
如果我想彻底了解它的"原因",我可以简单地试试:
pragma Pure;
pragma Preelaborate;
pragma Elaborate
单元,要么重新考虑包布局.with
with
虽然这可能有效(是吗?),因为建议尽可能将包标记为Pure(同样使用Preelaborate),但它看起来有点脑损伤,我更愿意更好地理解这个过程.
在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) 我对 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)
我的问题本质上是两个分配是否生成相同的汇编指令,因此速度相同?(没有详细说明目标机器)