Есть ли хороший способ заставить несовместимость типов в C? - PullRequest
2 голосов
/ 29 июня 2010

В целях проверки типа я хотел бы определить функцию в строках

void myfunc(type1 a, type2 b)
{
...
}

, где type1 и type2 оба определены как uint8_t. Пока все хорошо, но для здравомыслия и проверки (например, DbC) я бы хотел предотвратить вызов функции со значением type2 для первого параметра или type1 для второго. К сожалению, неявное приведение типов Си против меня здесь. Кто-нибудь знает способ?

Ответы [ 2 ]

6 голосов
/ 29 июня 2010

Вы можете обернуть два типа в Struct.

typedef struct {
    uint8_t data;
} type1;

typedef struct {
    uint8_t data;
} type2;

Редактировать: мне это не нравится, потому что теперь вам нужно использовать a.data вместо

0 голосов
/ 29 июня 2010

Я думаю, что вы можете обернуть ваши типы, используя struct, а затем передать указатель на эти структуры.

...