Intereting Posts
Когда в режиме ландшафта iPhone 5, кнопка справа от панели навигации перестает работать, как ее исправить? Как добавить mutable_content в полезную нагрузку APNS с помощью консоли уведомлений Firebase? Будут вызваны события геообработки, если приложение будет завершено в iOS 11? Сохранить фотографии в альбом iOS, не сохраняйте их всех Плейлист Позиционирование SKSpriteNode В iOS, как мне реализовать перемещение вида в другое представление с импульсом? Создание UILabels в соответствии с количеством элементов массива в Swift Кодировка NSString для акцентов отображает сумасшедшие символы iOS – использование и память FMDB получение лучших описательных данных от отладчика в XCode Вызов метода с аргументами через определенное время Тексты песен api для моего музыкального приложения iOS Swift-Put Различные типы элементов пользовательского интерфейса в массиве можно ли изменять значок уведомления динамически

Как объявить C-массив в заголовочном файле?

У меня есть C-массив CGPoint который я хочу объявить в файле заголовка .h.

 CGPoint checkPoint[8]; 

Но когда я пытаюсь дать ему значение в .m:

 checkPoint[8] = { //<-- Error Here CGPointMake(0, -10), CGPointMake(10, 0), CGPointMake(0, 10), CGPointMake(-10, 0), CGPointMake(-10, -10), CGPointMake(10, -10), CGPointMake(10, 10), CGPointMake(-10, 10) }; 

Это дает мне ошибку, указывающую на первую открывающую скобку: Ожидаемое выражение

Я не очень привык к C-массивам, как правильно это сделать?

РЕДАКТИРОВАТЬ

Я попытался с extern в файле заголовка, но я получаю это сообщение об ошибке: Имя типа не позволяет указать класс хранения.

Вы должны добавить extern к объявлению в заголовке:

 extern CGPoint checkPoint[8]; 

Это сделало бы это декларацией, а не декларацией / определением. Обратите внимание, что определение не будет компилироваться из-за вызовов CGPointMake в инициализаторе (должно быть константой времени компиляции, но CGPointMake является функцией).

Вы можете заменить CGPointMake стиль инициализации {.x= 0, .y=-10} , например:

 checkPoint[8] = { //<-- Error Here {.x=0, .y=-10}, {.x=10, .y=0}, {.x=0, .y=10}, {.x=-10, .y=0}, {.x=-10, .y=-10}, {.x=10, .y=-10}, {.x=10, .y=10}, {.x=-10, .y=10} }; 

Примечание: (в ответ на поток комментариев к вопросу)

extern используется для объявления глобальных переменных. Они не принадлежат ни к одному классу, поэтому их объявление должно находиться за пределами @interface , и их определение должно быть вне блока @implementation .

Объявите его как extern CGPoint checkPoint[8] в заголовке, а затем в одном исходном файле вы можете инициализировать его как CGPoint checkPoint[8] = { { 0.0f, -10.0f }, { 10.0f, 0.0f }, … };

Без extern вы бы определяли его заново в каждом файле, который включает заголовок. Инициализаторы также должны быть константами времени компиляции.