Я использую __attribute__((init_priority(X)))
в GCC как это:
Type1 __attribute__ ((init_priority (101))) name1 = value1;
Type2 __attribute__ ((init_priority (102))) name2 = value2;
в файлах другого источника. Скажем, file1.cpp и file2.cpp. Если я использую это в той же библиотеке, она работает как ожидалось, name1 инициализируется, прежде name2, но если я использую это в различных библиотеках, порядок инициализации не является ожидаемым. Я читал на gcc документации, что это должно работать в различных библиотеках, как я ожидаю, для определения порядка инициализации. Есть ли что-то не так в способе, которым я использую это? У Вас была та же проблема?
PS: рефакторинг не является решением для этой проблемы, потому что я должен портировать очень большой проект из Visual Studio.