C++ 链接的typedef:Perf。问题

C++ 链接的typedef:Perf。问题,c++,typedef,C++,Typedef,在处理新代码时,我问自己一个问题:在同一个基类型上有多个typedef会影响性能吗? 示例(我知道这很愚蠢,但这就是我实际看到的,typedef的四个级别…): 我正在使用的应用程序非常庞大(几十万LoC),所以我想知道 将-02(有时是-03)与GCC一起使用,是否会将这4种类型中的每一种都计算为基类型 任何提示(谢谢) 否,typedef是仅编译时选项。否,typedef是仅编译时选项。typedef的运行时开销完全为零。它只是定义了同义词。例如,在您的示例中,您可以看到编译器可以毫无问题地

在处理新代码时,我问自己一个问题:在同一个基类型上有多个typedef会影响性能吗?

示例(我知道这很愚蠢,但这就是我实际看到的,typedef的四个级别…):

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

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

任何提示(谢谢)



否,typedef是仅编译时选项。

否,typedef是仅编译时选项。

typedef的运行时开销完全为零。它只是定义了同义词。例如,在您的示例中,您可以看到编译器可以毫无问题地接受将同一变量的
CLOCKCURRENTTIME
float
混合使用

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

// MyFunction.h

void MyFunction(float f);

// MyFunction.cpp

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

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

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

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

// MyFunction.h

void MyFunction(float f);

// MyFunction.cpp

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

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

您的意思是typedef正在用基类型“替换”每个子类型吗?@Isaac Clarke:没有基类型和子类型
typedef
只为现有类型创建一个新名称,不创建新类型(7.1.3/1)。因此,编译器总是知道它需要知道的一切:与仅使用
float
相比,typedef没有理由对发出的代码产生任何影响。谢谢!这很简单,但值得一问。你的意思是typedef正在用基类型“替换”每个子类型吗?@Isaac Clarke:没有基类型和子类型
typedef
只为现有类型创建一个新名称,不创建新类型(7.1.3/1)。因此,编译器总是知道它需要知道的一切:与仅使用
float
相比,typedef没有理由对发出的代码产生任何影响。谢谢!这很简单,但值得一问。你是对的,我实际上写了:printf(“%f”,CLOCKCURRENTTIME)。我添加了一个示例来澄清我的意思。你是对的,我实际上写了:printf(“%f”,CLOCKCURRENTTIME)。我添加了一个示例来澄清我的意思。