Я хочу построить массив строк постоянного фиксированного размера. Я мог бы использовать mallo c, если бы мне пришлось, но я все еще изучаю C и хочу понять, почему мой подход stati c ниже недействителен:
typedef char Str[4];
const Str a = "abc";
const Str b = "def";
const Str data[2] = {a, b};
G CC дает мне
warning: initialization of ‘char’ from ‘const char *’ makes integer from pointer without a cast [-Wint-conversion]
10 | const Str data[2] = {a, b};
| ^```
и
error: initializer element is not computable at load time
Почему компилятор говорит, что первым элементом массива является char
вместо const Str
псевдоним constant char[4]
?
Любая помощь приветствуется. Спасибо.
EDIT : Я обнаружил, что использование const char *data[2] = {...}
работает. Я предполагаю, что это связано с несколькими ограничениями, связанными с массивами, с которыми я все еще борюсь и которые в большинстве случаев можно решить с помощью указателей.