Такой вопрос-загадка.
Понадобилось собрать QT5 -проект на MacOS. Под Windows собрался успешно. Там были строки вида:
#pragma once
....
constexpr char* Value1 = "sdfsdfasf";
— в h-файле с в глобальном пространстве имен. constexpr компилятор отверг (чего-то там с версией C++ связано). Ну ок, допустим компилятор не понимает constexpr.
Второе. Заменил на const, типа так:
#pragma once
....
const char* Value1 = "sdfsdfasf";
Потратил еще кучу времени на сборку — уже на этапе линковки возникла ошибка — пишет что переменная Value1 объявлена дважды или что-то такое. Один файл мой, другой какой-то комбинированный. При этом на Windows все успешно собралось.
Ну ок, заменил #pragma once на:
#ifndef MY_H
#define MY_H
...
const char* Value1 = "sdfsdfasf";
#endif /* !MY_H */
Пол часа жду — та же фигя
Потом добавил:
static const char* Value1 = "sdfsdfasf";
— и о чудо — оно собралось.
Что это могло быть? Какие гипотезы?