我在一家使用大型C++项目来自动化制造过程的公司工作,在查看C++源代码的修订历史时,我注意到了以下特殊行为.
下面显示了软件的不同版本中此行为的简化示例.
软件修订版1:
struct Foo
{
int x;
int reserve[20]; // unused
};
Run Code Online (Sandbox Code Playgroud)
软件修订版2:
struct Foo
{
int x;
int y[2];
int reserve[18]; // unused
};
Run Code Online (Sandbox Code Playgroud)
软件修订版3:
struct Foo
{
int x;
int y[2];
int z[5];
int reserve[13]; // unused
};
Run Code Online (Sandbox Code Playgroud)
很明显,未使用的reserve数组就是为了确保创建的结构的任何实例总是占用相同数量的内存,而不管软件的哪个版本正在运行.
我的问题是:对于大型C++项目,这是常见的做法和/或良好做法吗?是否有任何一般性(一般意义,非特定应用)原因使用这种做法是必需的还是有利的?
是的,这是一种常见的做法.我不能说这是好事还是坏事,因为它取决于.
当然,在做这件事时你必须要小心,因为你将来某个时候可能会用完保留字段,通常是在你从未想过的地方.
| 归档时间: |
|
| 查看次数: |
136 次 |
| 最近记录: |