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