Проблема в том, что вы не знаете cstr
во время компиляции.
int i = function_call();
const char* cstr = NULL;
if(i > 0)
{
cstr = "hello";
}
else
{
cstr = "ciaooo";
}
Рассмотрим пример выше. Компилятор не знает, какое значение const char* cstr
примет до времени выполнения.
По сути, я бы сказал, что вы не можете сделать такую проверку во время компиляции.
Обратите внимание, что хотя объявлено как const
это не означает, что переменная cstr
является постоянной Обратите внимание, что тип указателя const
. Вы должны прочитать это так: (const char)* cstr
. Это означает, что вы не можете выполнять такие операции cstr[0] = 's';
Чистая константа будет объявлена так:
const char * const CONSTANT = "test";
Новое назначение не будет выполнено во время компиляции. Даже если вы использовали этот подход, я не думаю, что есть возможность оценить содержание константы во время компиляции.