2013-10-07 2 views
0

Я хотел бы знать, как создать собственный тип данных байтового уровня (например, int, short, long и т. Д.). Я знаю, что некоторые спросят: «Почему !!», это сумасшествие! » скажем, я не хочу использовать классы или структуры. И я хочу знать, как создать такой тип данных для C/C++, даже если мне нужно использовать код asm для этого (что, я думаю, мне придется использовать). Или есть книга, которая могла бы помочь?Как создать собственный тип данных уровня байта?

Может ли кто-нибудь помочь? Спасибо.

+1

Единственный способ создания этих типов данных - переписать/написать компилятор C++/c таким образом, чтобы анализировать и сохранять новые типы с помощью инструкций по сборке. Я бы сказал, получить хорошую книгу о компиляторах и захватить источник для GCC. –

+1

То, о чем вы просите, не представляется возможным. Пожалуйста, объясните, что вы пытаетесь достичь, и кто-то может вам помочь ... –

+2

Звучит как типичная [проблема XY] (http://www.perlmonks.org/index.pl?node_id=542341) меня. – usr2564301

ответ

1

Если вы исключили все методы C и C++, создайте новые типы, тогда вы не сможете создавать новые типы.

Это просто с классом:

сделать класс, который имеет какое-то хранилище. Если вы настаиваете на том, чтобы делать все вручную, просто сделайте это массив байтов. Перегрузите все операторы, которые хотите поддерживать.

class my_datatype 
{ 
public: 
    my_datatype(); 
    // overload operators 
private: 
    uint8_t[sizeof_my_datatype] data; 
}; 

Кроме классов и структур, единственный способ «сделать» новый тип данных в C и C++ является typedef. Однако это не более чем псевдоним.

+0

OP не хочет использовать классы или структуры, но OP действительно не знает, что он/она хочет ... –

+0

проблема здесь Я не думаю, что это сработало бы только для компилятора C –

+0

Вы сказали C++ как Что ж. – Adam

Смежные вопросы