Member 13581003 Ответов: 3

Отсутствует двоичный оператор перед токеном "("


Вот мой код:

#if GDK_VERSION_MAX_ALLOWED < GDK_VERSION_MIN_REQUIRED
#error "GDK_VERSION_MAX_ALLOWED must be >= GDK_VERSION_MIN_REQUIRED"
#endif
#if GDK_VERSION_MIN_REQUIRED < GDK_VERSION_3_0
#error "GDK_VERSION_MIN_REQUIRED must be >= GDK_VERSION_3_0"
#endif

#define GDK_AVAILABLE_IN_ALL                  _GDK_EXTERN

/* XXX: Every new stable minor release should add a set of macros here */

#if GDK_VERSION_MIN_REQUIRED >= GDK_VERSION_3_0
# define GDK_DEPRECATED_IN_3_0                GDK_DEPRECATED
# define GDK_DEPRECATED_IN_3_0_FOR(f)         GDK_DEPRECATED_FOR(f)
#else
# define GDK_DEPRECATED_IN_3_0                _GDK_EXTERN
# define GDK_DEPRECATED_IN_3_0_FOR(f)         _GDK_EXTERN
#endif

#if GDK_VERSION_MAX_ALLOWED < GDK_VERSION_3_0
# define GDK_AVAILABLE_IN_3_0                 GDK_UNAVAILABLE(3, 0)
#else
# define GDK_AVAILABLE_IN_3_0                 _GDK_EXTERN
#endif


Теперь, заметьте, я не беру кредит на этот код; он был загружен с сайта . [^]

Но мне нужен был этот заголовок для одного из моих исходных кодов, поэтому я скопировал его. Ошибка возникает в строке #if GDK_VERSION_MAX_ALLOWED < GDK_VERSION_3_0 и подобных ей видах. Может ли кто-нибудь сказать мне, почему это происходит?

Что я уже пробовал:

В самом деле, я очень мало пробовал, потому что понятия не имею, с чего начать!!! Я не ставил никаких скобок в "#if GDK_VERSION_MAX_ALLOWED < GDK_VERSION_3_0", но он все еще показывает мне ошибку отсутствующего двоичного оператора перед токеном "(". Пожалуйста, помогите!

PIEBALDconsult

О, какой гротескный код.
Посмотрите на определения макросов.
Изучите выходные данные препроцессора.

3 Ответов

Рейтинг:
2

OriginalGriff

Это что-то еще в вашем коде: если я копирую и вставляю эту кучу в компилятор C (или C++), он компилируется без проблем.
Поэтому начните с просмотра того, что еще у вас есть, особенно внутри файлов #include, и ищите другие замены. Помните, что #DEFINE-это операция препроцессора, которая эффективно выполняет подстановку текста без какого-либо реального интеллекта. Так что, если у вас есть какие-то другие замены...


Рейтинг:
1

Richard MacCutchan

Цитата:
Я даже не знаю, с чего начать!
Вернитесь в то место, где вы скачали этот код, и спросите там. Это полная трата времени на загрузку кода из интернета, Если вы не понимаете, что это такое и что он делает.


Member 13581003

большое вам всем спасибо! Когда я впервые опубликовал это, я не ожидал никаких ответов. Так что спасибо вам!

Рейтинг:
1

Rick York

Похоже, вам нужно выяснить, каковы эти определения :

GDK_VERSION_MAX_ALLOWED
GDK_VERSION_MIN_REQUIRED

Я не знаю, какой у вас компилятор, но с VS17 вы можете щелкнуть правой кнопкой мыши на макро и выбрать перейти к определению и узнать, какие значения они имеют и где они определены. Кроме того, просто наведите на них курсор мыши, чтобы показать их значения.