Пустая структура в C против пустой структуры в C++

Почему пустая структура в C является нарушением ограничения? Почему это правило изменяется в C++?

Есть ли исторические причины?

2 ответа

Решение

Поскольку у вас нет наследования в C, они вам не нужны. Если вы просто хотите иметь различимый тип указателя, вы можете использовать указатели на неполные типы.

struct opaque;

struct opaque* stranger = 0;

должно работать нормально.

Я думаю, это:

В C нет наследования, шаблонов и перегрузки функций - три основные причины, по которым мы используем пустые структуры в C++ - в качестве базового интерфейса, в качестве параметра шаблона, в качестве типа, помогающего разрешению перегрузки.

Можете ли вы подумать о реальном использовании пустой структуры в C?

Другие вопросы по тегам