Головоломка с const
От: Shmj Ниоткуда  
Дата: 13.01.23 22:23
Оценка: -1 :))) :))) :))) :))) :))
Такой вопрос-загадка.

Понадобилось собрать 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";


— и о чудо — оно собралось.

Что это могло быть? Какие гипотезы?
Отредактировано 13.01.2023 22:24 Shmj . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.