相关疑难解决方法(0)

标头中的枚举会导致过多的重新编译

John Lakos 将此问题称为编译时耦合的潜在根源(他的简介中的图 0-3):

我面临的问题是编译了太多文件,因为对单个枚举存在物理依赖性。

我有一个带有枚举定义的标头:

// version.h
enum Version {
    v1 = 1,
    v2, v3, v4, v5, ... v100
};
Run Code Online (Sandbox Code Playgroud)

这被数百个文件使用。每个文件定义一类对象,必须使用该read()函数从磁盘读取这些对象。Version用于确定读取数据的方式。

每次引入新的类或类成员时,都会将新条目附加到枚举中

// typeA.cpp
#include "version.h"

void read (FILE *f, ObjectA *p, Version v) 
{
    read_float(f, &p->x);
    read_float(f, &p->y);
    if (v >= v100) { 
        read_float(f, &p->z);  // after v100 ObjectA becomes a 3D
    }
}
Run Code Online (Sandbox Code Playgroud)

// typeB.cpp
#include "version.h"

void read (FILE *f, ObjectB *p, Version v)
{
    read_float (f, &p->mass);
    if …
Run Code Online (Sandbox Code Playgroud)

c c++

5
推荐指数
1
解决办法
251
查看次数

标签 统计

c ×1

c++ ×1