Я хочу определить названный тип Int_1_100_Type
который является integer
переменная в диапазоне от 1 до 100. Как я должен определить этого?
например: Я передаю эту переменную функции, которая принимает переменную типа Int_1_100_Type
, funca(Int_1_100_Type Var1)
Конечно, можете. Все, что вам нужно, это небольшой объектно-ориентированный C.
создать файл со структурой и некоторыми членами
typedef struct s_foo {
int member;
} Foo;
Foo* newFoo(int input); // ctor
void get(Foo *f); // accessor
Обеспечить соблюдение вашего условия в мутаторе / ctor
Если вы сделаете это в отдельном файле, вы можете скрыть impl класса, вы можете сделать oo-подобный C
Вы не можете наложить такое ограничение на диапазон целого числа.
Вы, конечно, можете typedef
его в любом случае:
typedef int int_1_100;
или даже лучше:
typedef unsigned int int_1_100;
Но ничто в C не помешает вам написать:
int_1_100 x = 1000;
Чтобы реализовать нечто подобное, нужно скрыть реализацию, но это затруднит инициализацию значения (и сделает невозможным выделение значений типа на стеке, с сохранением скрытия).
В c нет способа определить тип, который должен находиться в определенном диапазоне. Однако вы можете проверить каждое значение в своих функциях, например
int funca(int Var1)
{
assert(Var1 >= 1);
assert(Var1 < 101);
...
}
В C ++ можно было бы сделать это, написав класс, который действовал бы как целое число, но это было бы слишком трудоемко и слишком тяжеловесным решением, чтобы быть практичным.
Спасибо Naveen за указание, что вопрос касается только C.
Вы не можете, у C есть нет такой функциональности. Вы, конечно, можете ввести int:
typedef int int_1_100_Type;
, но нет способа ограничить его диапазон. В C ++ вы можете создать новый тип с этой функциональностью, но я думаю, что мало кто будет беспокоиться - вам просто нужно поставить проверки диапазона в функции, которые используют этот тип.