Просто немного поиграйте с С++. То, что я действительно хочу сделать, - это настроить функцию со значениями по умолчанию, определенными для аргумента массива или указателя. Чтобы все было просто, позвольте просто использовать массив. Например:
void experimentA(char a[3] = {'a', 'b', 'c'});
Компилятор (LLVM GCC 4.2 с GNU99) жалуется на "Ожидаемое выражение". Это довольно тупо, но мне сказали коллеги, что это происходит потому, что "ценность", которую я пытаюсь назначить, статически распределяется, тогда как переменная, которую я пытаюсь назначить (a[3]
), авто.
Но я не совсем уверен, если это так, поскольку я могу это сделать:
void experimentB(char a[3] = "abc");
И компилятор просто предупреждает меня, что преобразование string-literal в char * устарело.
Я не понимаю, как "abc" принципиально отличается от {'a', 'b', 'c'}, чтобы вызвать это несоответствие. Любое понимание очень ценится!