c++ - 速度 : typedef vs #define in c++

标签 c++ g++ clang

最近我遇到了 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/

相关文章:

c++ - 垂直工具栏上的渲染子工具

c++ - 将 header 包含到 OpenCL .cl 文件

c++ - 如何用clang++编译boost单元测试模块?

c++ - Clang:将特定警告标记为非错误

c++ - 如何在 C++ 类函数中将 std::map 作为默认构造函数参数传递

c++ - 使用 clang AST 解析器忽略丢失的 header

c++ - 虚函数覆盖预期错误

C++11 从初始化列表到数组参数的隐式转换

c++ - g++ 模板错误或 VC 过于宽松?

c++ - c++编译时的错误