Для любого дочернего процесса невозможно изменить среду родительского процесса. Лучшее, что вы можете сделать, это вывести инструкции оболочки в stdout, которые вы затем используете, или записать в файл, который вы используете в родительском.
Существует обычная разница между указателем на константу и указателем на константу. Сделав свой constexpr char*
, вы сами сделали указатель constexpr
(и, конечно, const
), но он все еще пытается указать на неконстантный символ - и это неправильно, так как строковые литералы const
, Решение:
constexpr const char* ch = "StackOverflow!";
, который объявляет указатель constexpr
на const
.
constexpr
подразумевает const
, но в этом случае он применяет const
к «неправильной вещи».
constexpr char*
в основном совпадает с
char * const
, который является постоянным указателем на неконстантный char
. Это не сработает, потому что строковые литералы имеют тип const char[N]
, поэтому отбрасывают константность элементов массива.
constexpr const char*
, с другой стороны, в основном совпадает с
char const * const
, который является постоянным указателем на константу char
, то есть то, что вы хотите, так как оно сохраняет константу элементов .