确保使用自定义类型

Sam*_*rsa 7 c++ types typedef

考虑到这个答案是为了typedefs基本类型的好处以及为什么使用它们,有没有办法确保在你的项目中你没有使用基本类型并使用了typedef对应物?

Fré*_*idi 8

如果你真的,绝对想要禁止原生类型但允许typedefs,我想你总是可以这样做:

#include <stdint.h>

#define int please_use_stdint_typedefs_rather_than_native_types

int main()
{
    int32_t good;  // Good typedef.
    int evil;      // Evil native type.
}
Run Code Online (Sandbox Code Playgroud)
$ gcc -c int_forbidden.c 
int_forbidden.c: In function ‘main’:
int_forbidden.c:8: error: ‘please_use_stdint_typedefs_rather_than_native_types’ undeclared (first use in this function)
int_forbidden.c:8: error: (Each undeclared identifier is reported only once
int_forbidden.c:8: error: for each function it appears in.)
int_forbidden.c:8: error: expected ‘;’ before ‘evil’
Run Code Online (Sandbox Code Playgroud)

也就是说,在一般情况下,我认为完全禁止原生类型是个好主意.

  • 如果在包含标准或库标题之前完成,`#define`可能会大大损害*,这可能会非常快. (3认同)
  • 我很确定这会导致代码格式不正确,即使大多数编译器都不介意. (3认同)
  • @Dennis Zickefoose:好吧,`void main()`已经格式不正确了,`int main()`也不会在这里工作.任何打破`int main()`的"想法"显然从一开始就注定要失败. (2认同)

Joe*_*cou 5

你可以在这个boost库中提出这些typedef Strong Typedef:http://www.boost.org/doc/libs/1_40_0/boost/strong_typedef.hpp