Как void работает с типом Aliassing?

Я внимательно перечитывал правила для псевдонимов типов: http://en.cppreference.com/w/cpp/language/reinterpret_cast#Type_aliasing У меня конкретно есть вопрос о последнем правиле, в котором нам разрешено приводить:

char или же unsigned charэто позволяет проверить представление объекта любого объекта в виде массива unsigned char

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

0

Решение

В этом случае нет псевдонимов типов, потому что вы не можете исследовать объект через void*, Для этого вам нужно разыменовать void*, но это запрещено. void в любом контексте это неполный тип, и вы не можете разыменовать указатели на неполные типы.

2

Другие решения

void является неполным типом. Там никогда не может быть объект типа void,

2

void странно в том что можно что то объявить void*, но вы бы редко использовали void сам по себе вне контекста определения функции. В этом смысле это неполный тип, и поэтому сам по себе не имеет реального значения. void на самом деле просто существует для синтаксиса.

Вы можете технически привести тип к void,

int i = 0;
(void)i;

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

Вы также можете привести и объявить указатели как void*, что означает, что он может указывать на что-либо (за некоторыми исключениями). Однако вы не можете разыменовать его, пока не приведете его к полному типу, например unsigned char,

0
По вопросам рекламы [email protected]