C Вложенное имя структуры не компилируется в C ++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 C Вложенное имя структуры не компилируется в C ++

Сообщение Anonymous »

У меня есть код C, который использует вложенные структуры: < /p>

Код: Выделить всё

struct long_project_name_x {
struct long_project_name_x_y {
struct long_project_name_x_y_z {
int i;
} z;
} y;
};
< /code>
В c вложенные определения структуры все занимают глобальное пространство имен, поэтому я могу обратиться к любому из них без каких-либо проблем: < /p>
struct long_project_name_x x = { 1 };
struct long_project_name_x_y y = { 1 };
struct long_project_name_x_y_z z = { 1 };
Тот же код, однако, не снимается в C ++, говоря, что struct long_project_name_x_y и struct long_project_name_x_y_z неполные типы. в C -коде. Это заставляет меня писать код как: < /p>

Код: Выделить всё

long_project_name_x x = { 1 };
long_project_name_x::long_project_name_x_y y = { 1 };
long_project_name_x::long_project_name_x_y::long_project_name_x_y_z z = { 1 };
< /code>
Есть ли способ написать код, который будет работать как в C, так и в C ++? Я попробовал: < /p>
#ifdef __cplusplus
using long_project_name_x_y = long_project_name_x::long_project_name_x_y;
#endif
Но это не может компилироваться при префиксе с помощью struct тега.


Подробнее здесь: https://stackoverflow.com/questions/795 ... mpile-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»