Обеспечить использование пользовательских типов - PullRequest
7 голосов
/ 26 июня 2011

Учитывая этот ответ в пользу typedefs для базовых типов и почему они используются, есть ли способ убедиться, что в вашем проекте вы не использовали базовый тип и использовали аналоги typedef

Ответы [ 3 ]

8 голосов
/ 26 июня 2011

Если вы действительно, абсолютно хотите запретить нативные типы, но разрешите 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.
}

$ 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’

Этосказал, что я не думаю, что прямой запрет на нативные типы - это хорошая идея в общем случае.

5 голосов
/ 26 июня 2011

Вы можете сделать эти typedefs Strong Typedefs как предложено в этой библиотеке повышения: http://www.boost.org/doc/libs/1_40_0/boost/strong_typedef.hpp

0 голосов
/ 26 июня 2011

Учитывая, что typedef является просто синонимом для типа и фактически не создает новый тип, я не думаю, что был бы какой-либо надежный способ обеспечить это. Вы можете написать скрипт для запуска кода и поиска вхождений примитивных типов в сравнении с ожидаемым аналогом typedef.

...