Я пытаюсь инициализировать структуру с использованием именованных атрибутов способом, совместимым как с GCC 4.3.4, так и с Clang 2.9.
struct A {
unsigned int x;
};
// GCC: error: expected primary-expression before '.' token
A a = {
.x = 0xdeadbeef;
};
// Clang: error: use of GNU old-style field designator extension [-Werror,-Wgnu-designator]
A a = {
x : 0xdeadbeef;
};
Не могу добавить -Wno-gnu-designator до CXXFLAGS , потому что тогда GCC откажется строить, так как не знает этот флаг.Я не могу использовать список инициализации без именования атрибутов, потому что при изменении API у нас будут серьезные проблемы.
Решение, которое мне нужно, должно соответствовать стандарту C ++, сохраняя тот факт, что если новые атрибуты появляются вstruct они должны быть неинициализированы (или предпочтительно NULL).Структуры являются сторонними, и я не могу их никоим образом изменять.