Правильность const для параметра argv execv
Возможный дубликат:
Двойной указатель предупреждений о правильности в C
Посмотрите на таблицу здесь: http://pubs.opengroup.org/onlinepubs/009695399/functions/exec.html
Мы видим, что следующее недопустимо в C:
void f(const char * const argv[])
{
(void)argv;
}
int main(int argc, char *argv[])
{
(void)argc;
f(argv);
return 0;
}
test.c: In function 'main':
test.c:9: warning: passing argument 1 of 'f' from incompatible pointer type
test.c:1: note: expected 'const char * const*' but argument is of type 'char **'
Почему это недействительно? Мне кажется, что const char * const argv[]
просто "более постоянный", чем char * argv []
(и это разрешено в C++), так почему это недействительно в C?