为整数创建自定义 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/