c++ - 在编译器中禁用默认数字类型

标签 c++

为整数创建自定义 typedef 时,当您使用默认数字类型时,编译器是否可能发出警告?

例如,

typedef int_fast32_t    kint;

int_fast32_t test=0;//Would be ok
kint test=0; //Would be ok
int test=0; //Would throw a warning or error

我们正在转换一个大型项目,平台上的默认 int 大小是 32767,这导致了一些问题。此警告会警告用户不要在代码中使用整数。

如果可能的话,如果这能在 GCC 和 VC++2012 上运行就太好了。

最佳答案

我有理由相信 gcc 没有这样的选项,如果 VC 有我会感到惊讶。

我建议编写一个程序来检测对源代码中预定义类型的引用,并在构建过程中自动调用该工具。搜索某些关键字可能就足够了。

请确保将此限制为您自己的源文件;预定义和第三方 header 可能会广泛使用预定义类型。

但我不会绝对禁止。有许多使用预定义类型的标准库函数。例如,在 c = getchar()声明 c 是没有意义的除了int以外的任何东西.像 for (int i = 0; i <= 100; i ++) ... 这样的东西没有问题

理想情况下,目标应该是正确使用预定义类型。该语言从未保证 int可以超过 32767。(但“正确”使用很难或不可能自动验证。)

关于c++ - 在编译器中禁用默认数字类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11925961/

相关文章:

c++ - Arduino 库中的编译错误

c++ - C 与 C++ 中的 const 正确性

c++ - 为什么我的 <bool> 类型的 vector 只存储 1?

c++ - 如何有效地将 if 和 else 用于过滤结构?

c++ - 使用 copy+back_inserter 将文件流式传输到 vector<float>

c++ - C++ 中 Pascal 字符串的数据布局

c++ - 如何为arduino编译V-USB?

c++ - 杀死一个阻塞的 Boost::Thread

带有模板参数的 C++ 函数分派(dispatch)

c++线程速度测试,我做对了吗?