Что-то не понял, почему нельзя возвращать указатель на константу? Тогда оно "само" приведётся к неконстанте, если потребуется.
Код
char const *StrFunc(char const *str)
{
return str + 5;
}
int main(void)
{
const char str1[] = "Hello, world!\n";
char str2[] = "Hello, world!\n";
const char *res1 = StrFunc (str1);
char *res2 = StrFunc (str2);
printf(res1);
printf(res2);
return 0;
}
UPDATE. Чёрт, опять часть варнингов потерялась...
Код
warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
char *res2 = StrFunc (str2);
Да-а, беда. Плюсы с перезагрузкой ждут Вас :-)