速度:C++ 中的 typedef 与 #define

Speed : typedef vs #define in c++

最近我遇到了 typedefs 和 #defines。尽管它们的用法相似,但其中一个是编译器令牌,另一个是预处理器令牌。

这让我想知道他们的运行速度,因为人们希望在竞争性编程中尽可能快。

那么,哪个比较快呢?附有答案的解释会很棒。使用的编译器会有什么不同,比如 g++ vs MSVC compiler vs clang 编译器?

用例示例: typedef long long int;#define ll long long int.

它们花费的时间相同。您根本不会注意到任何差异。

另请注意,如果使用得当,它们在运行时是相同的。只有在编译时它们可能略有不同,但几乎没有什么。

执行时间没有差异,因此您可以将其中任何一个用于竞争性编程。

我个人避免使用 #define 并使用 typedef 作为类型,因为它更清晰易读。

如果您关心使用 c++ 功能,更好的选择是使用 using 关键字,该关键字从 c++11 开始可用并且专门为此目的而设计。它还与模板兼容。

请注意,usingtypedef 在语义上是相同的。

https://en.cppreference.com/w/cpp/language/type_alias

在性能上没有差异,但不推荐预处理器宏,因为它们会污染全局范围,因为与 typedef 不同,它们不能放在命名空间中。

但可以说,ll 表达能力不强;它可能会降低代码的可读性。考虑使用 <cstdint> 中的 int64_t。它很好,因为它更具表现力(_t 清楚地表明它是一种类型,它的大小恰好是 64 位,因此是面向未来的,即使 long long 是 128 位),并且相对简洁所以没有需要 typedef 任何东西。