У нас есть заявление в lcd.c:Как объявить extern 2d-массив в заголовке?
unsigned char LCD[8][64] = {((unsigned char) 0)};
И в lcd.h мы хотим иметь что-то вроде:
extern unsigned char LCD[][];
Мы получаем эту ошибку:
Error[Pe098]: an array may not have elements of this type
Может быть полезно подчеркнуть «#include» LCD.h «' в 'LCD.c' (так что макрос MINOR определяется только один раз в файле заголовка), чтобы исключить возможность возникновения конфликтующих типов для' LCD' между декларация и фактическое определение (которое не обнаруживается как ошибка компиляции, когда они находятся в разных файлах и ошибка компоновщика). –
Я думал, что всякий раз, когда проект содержит как XYZ.h, так и XYZ.c, это довольно универсальное правило и безопасная ставка, что XYZ.c будет включать XYZ.h, нет? –
Да, вы правы, но как всегда лучше его подтвердить (например, для некоторых начинающих программистов, которые читают SO). –