Я использую __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.