С++, не присваиваются значения глобальных inline переменных

Рейтинг: 0Ответов: 0Опубликовано: 10.02.2023

Переменные объявлены в .h файле, этот файл подключается только один раз. Сам .h файл - API файл библиотеки .so, которая динамически линкуется к бинарнику. При присваивании им значения оно не устанавливается.

Пример объявления:

#define EXPORT __attribute__ ((visibility ("default")))
inline EXPORT std::filesystem::path  g_config_path;

gdb:

108     g_run_path = "/run/" NT_VENDOR;
(gdb) n
109     g_var_path = "/var/lib/" NT_VENDOR;
(gdb) p g_run_path
$6 = filesystem::path ""
(gdb) n
110 }
(gdb) p g_var_path
$7 = filesystem::path ""

276                 PARSE_NUMBER_OPT(g_proc_id); # В макросе устанавливается значение g_proc_id из optarg
(gdb) p optarg 
$9 = 0x7fffffffe2ca "1"
(gdb) n
277                 break;
(gdb) p g_proc_id
$10 = {_value = 0 '\000', _has_value = false}

377         g_config_path = fs::absolute(cfgfile, ec);
(gdb) p cfgfile
$11 = 0x7fffffffe288 "./example.conf"
(gdb) n
378         if (ec)
(gdb) p g_config_path
$12 = filesystem::path ""

И так далее.

Из-за чего такое может быть?

Ответы

Ответов пока нет.