链式typedef:Perf。问题?

时间:2010-11-04 14:16:09

标签: c++ typedef

使用新的代码片段,我问自己一个问题:多个typedef是否会影响相同的基本类型?

示例(我知道这很愚蠢,但这就是我实际看到的,有四个类型的typedef ......):

typedef float T_FLOAT
typedef T_FLOAT T_TIME
typedef T_TIME T_CURRENTTIME
tyoedef T_CURRENTTIME CLOCKCURRENTTIME
// etc.

我正在使用的应用程序非常庞大(数十万LoC),所以我想知道......

在GCC中使用-02(有时是-03),是否将这4种类型中的每一种都计算为基类型?

任何提前赞赏=)


2 个答案:

答案 0 :(得分:5)

不,typedef是仅编译时选项。

答案 1 :(得分:4)

typedef的运行时开销正好为零。它只是定义同义词。在您的示例中,您可以看到混合CLOCKCURRENTTIMEfloat对于同一个变量,例如,编译器可以毫无问题地接受它。

编辑:我的意思的一个例子

// MyFunction.h

void MyFunction(float f);

// MyFunction.cpp

void MyFunction(CLOCKCURRENTTIME f)
{
  // Do whatever
}

声明和实现匹配,因为floatCLOCKCURRENTTIME对于编译器是完全可互换的。如果它们只是可转换的,那么您将在.cpp文件中创建一个新的(不相关的)函数。