Пустая структура в C против пустой структуры в C++
Почему пустая структура в C является нарушением ограничения? Почему это правило изменяется в C++?
Есть ли исторические причины?
2 ответа
Решение
Поскольку у вас нет наследования в C, они вам не нужны. Если вы просто хотите иметь различимый тип указателя, вы можете использовать указатели на неполные типы.
struct opaque;
struct opaque* stranger = 0;
должно работать нормально.
Я думаю, это:
В C нет наследования, шаблонов и перегрузки функций - три основные причины, по которым мы используем пустые структуры в C++ - в качестве базового интерфейса, в качестве параметра шаблона, в качестве типа, помогающего разрешению перегрузки.
Можете ли вы подумать о реальном использовании пустой структуры в C?