ошибка: объявление переменных экземпляра в интерфейсе устарело [-Werror,-Wobjc-interface-ivars]

#objective-c

#objective-c

Вопрос:

Я только что клонировал проект с github, и я пошел его создавать, и я сталкивался с этой ошибкой снова и снова. Есть идеи, в чем проблема?

Вот некоторые из моих выходных данных об ошибках и часть кода, который вызывает ошибку:

ПРИМЕЧАНИЕ: _indexSetFlags и _internal являются переменными, которые вызывают ошибку в этом примере кода

 #import <Foundation/NSObject.h>
#import <Foundation/NSRange.h>

NS_ASSUME_NONNULL_BEGIN

@interface NSIndexSet : NSObject <NSCopying, NSMutableCopying, NSSecureCoding> {
    @protected   // all instance variables are private
    struct {
        NSUInteger _isEmpty:1;
        NSUInteger _hasSingleRange:1;
        NSUInteger _cacheValid:1;
        NSUInteger _reservedArrayBinderController:29;
    } _indexSetFlags;
    union {
        struct {
            NSRange _range;
        } _singleRange;
        struct {
            void * _data;
            void *_reserved;
        } _multipleRanges;
    } _internal;
}
  

ВЫВОД ОШИБКИ:

/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Foundation .framework/Headers/NSAutoreleasePool.h:14:11: ошибка: объявление переменных экземпляра в интерфейсе устарело [-Werror,-Wobjc-interface-ivars] void *_reserved2;

/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Foundation .framework/Headers/NSString.h:543:9: ошибка: объявление переменных экземпляра в интерфейсе устарело [-Werror,-Wobjc-interface-ivars] int numBytes; ^ /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSString.h:545:9: ошибка: объявление переменных экземпляра в интерфейсе устарело [-Werror,-Wobjc-interface-ivars] int _unused; ^

/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Foundation .framework/Headers/NSNotification.h:39:11: ошибка: объявление переменных экземпляра в интерфейсе устарело [-Werror,-Wobjc-interface-ivars] void *_impl; ^

фатальная ошибка: выдано слишком много ошибок, остановка сейчас [-ferror-limit=] генерируется 20 ошибок.

Не удалось выполнить следующие команды сборки: CompileC /Users/bananaman123/Desktop/eecs481/hw6/wz_build/lib/sdl/warzone2100.build/Debug/sdl-backend.build/Objects-normal/x86_64/cocoa_wz_menus.o lib/sdl/cocoa_wz_menus.mm нормальный x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler (1 сбой)

Я пропустил большую часть выходных данных об ошибках, но все сообщения об ошибках содержат «ошибка: объявление переменных экземпляра в интерфейсе устарело [-Werror,-Wobjc-interface-ivars]»

Комментарии:

1. Похоже, это не c

2. Сообщение об ошибке очень точное. Если вы абсолютно не можете соответствующим образом изменить код, удалите переключатели компилятора, которые делают это ошибкой, как указано.

3. возможно, вы на один шаг впереди в настройке проекта, и вам нужно начинать все сначала, шаг за шагом. Смотрите мой ответ

Ответ №1:

Поскольку репозиторий README.md предлагает в самой последней строке пойти и прочитать

https://github.com/Warzone2100/warzone2100/blob/master/macosx/README.md

затем идите шаг за шагом и выполняйте требования.
В основном он написан на C и поэтому нуждается в соответствующей обработке.

Вам нужен CMake 3.15 , найдите его здесь https://cmake.org/download/#latest

также Gettext через Homebrew

и Asciidoctor также через Homebrew .

Поскольку вы, очевидно, используете OSX 10.15 , вам не нужен GCC, Xcode> 11 подойдет.

Ваши ошибки возвращаются к фиктивной настройке проекта.
NSIndexSet — это класс, который принадлежит Foundation Framework. Обычно в этом коде нет ничего, что можно было бы исправить. Совершенно уверен, что это происходит, потому что предполагается, что Objective-C работает, что является простым способом включения C в ваш проект Xcode. Прочитайте больше о работе с .mm файлами, если вы хотите изменить способ их добавления в ваш проект, потому что..

Где-то между строками в Readme.md также написано..

«Запустите CMake для создания проекта Xcode»

Комментарии:

1. У меня установлены все инструменты, но, просматривая выходные данные, я вижу несколько красных флажков. Во-первых, в нем говорится, что gettext не найден. Точный результат: — Ищем gettext — Ищем gettext — не найден — Ищем iconv — Ищем iconv — не найден — Ищем strlcat — Ищем strlcat — найдено … Почему он не находит gettext? когда я набираю gettext —version , я ясно вижу, что установлена версия 0.21.

2. homebrew похож на открытку из прошлого. никогда не мог поддерживать его продуктивность за 15 лет кодирования. у каждого проекта одни и те же проблемы. Кстати, gettext — это инструмент локализации текста (хранитель перевода), звучит грандиозно, но это крошечная функция по сравнению с фреймворками Apple. ну, мой комментарий вам не поможет. Но, возможно, вы спрашиваете под тегом <homebrew> или <brew> здесь, в SO, с некоторыми журналами ошибок..