Что делает __G
в C?Что означает «__G»?
Я использую GCC 4.9.
Я использую последнюю версию MinGW.
Я компилирую с -std=gnu11
.
У меня есть следующий C (компилируемый с GCC как C11) Код:
#ifndef __G
#define __G 0
#endif
Это компилирует нормально.
Но сейчас, во время компиляции с последней MinGW, я получаю следующее:
In file included from ../common/sysbase/sysbase.h:6:0,
from Monitor.c:5:
../common/sysbase/sysbase_chk.h:3:13: error: expected ';', ',' or ')' before numeric constant
#define __G 0
compilation terminated due to -Wfatal-errors.
GCC под MinGW64, похоже, использует `__G для чего-то.
Я не мог найти его ни в каком заголовке.
Это идентификатор. Это тот, который зарезервирован для реализации, поэтому вы не должны использовать его в своем собственном коде; либо компилятор, либо заголовок, входящий в стандартную библиотеку, может свободно определять его в своих целях. –
Но знаете ли вы, из какого API/стандарта он исходит? – user3525723
Я знаю, что идентификаторы, начинающиеся с «__», считаются зарезервированными словами. Но мое использование здесь просто! Я создаю API, и я использую «__G» и «__LE» в качестве макросов, чтобы определить способ хранения слов в памяти на целевой машине ... Теперь, после более чем года сбора кодов с этими заголовками, мне придется изменить aaalll мои коды? :( – user3525723