最近我遇到了 typedef
和 #define
。尽管它们的用法相似,但其中一个是编译器 token ,另一个是预处理器 token 。
这让我想知道他们的运行速度,因为人们希望在竞争性编程中尽可能快。
那么,哪个比较快呢?附有答案的解释会很棒。使用的编译器是否会产生任何差异,例如 g++
与 MSVC 编译器
与 clang
编译器?
用例示例:
typedef long long int;
和#define ll long long int
。
最佳答案
在性能上没有差异,但不推荐预处理器宏,因为它们会污染全局范围,因为与 typedef
不同,它们不能放在命名空间中。
但可以说,ll
的表现力不强;它可能会降低代码的可读性。考虑使用 int64_t
中的 <cstdint>
。这很好,因为它更具表现力(_t
清楚地表明它是一种类型,它的大小恰好是 64 位,因此是面向 future 的,即使 long long
是 128 位),并且相对简洁所以不需要 typedef
任何东西。
关于c++ - 速度 : typedef vs #define in c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61548611/