Ожидаемый неквалифицированный идентификатор перед числовой константой для определения числа
Я новичок в C++, поэтому я не знаю, что они означают с этой ошибкой в примере с кодом фид-кода:
Main.cpp: 8: 16: ошибка: ожидаемый неквалифицированный идентификатор перед числовой константой
//verander de volgende informatie naar de informatie voor jouw database
#define dserver "oege.ie.hva.nl"
#define duser "username"
#define dpassword "password"
#define ddatabase "databasename"
#define homeid 1234 //line 8
Есть ли синтаксическая ошибка? Или что-то другое? Я использую #define вместо int.
EDIT: добавлен полный журнал ошибок.
полный журнал ошибок: http://pastebin.com/3vtbzmXD
Полный код main.cpp: http://pastebin.com/SDTz8vni
Ответы
Ответ 1
Полная ошибка
error: expected unqualified-id before numeric constant
note: in expansion of macro ‘homeid
string homeid;
^
Вы пытаетесь объявить переменную с тем же именем, что и макрос, но это невозможно. Препроцессор уже опрокинул программу, превратив ее в string 1234;
, что не является допустимым объявлением. Препроцессор не знает структуры программы, а макросы не соответствуют правилам языковой области.
По возможности используйте языковые функции, такие как константы и встроенные функции, а не макросы. В этом случае вы можете использовать
const int homeid = 1234;
Это будет охватываться глобальным пространством имен и может быть безопасно скрыто чем-то с тем же именем в более узкой области видимости. Даже когда он скрыт, он всегда доступен как ::homeid
.
Когда вам действительно нужен макрос, разумно следовать соглашению об использовании SHOUTY_CAPS
для макросов. Помимо привлечения внимания к потенциальным опасностям и wierdnesses, связанным с использованием макросов, он не будет сталкиваться с каким-либо именем, используя другую капитализацию.
Ответ 2
Эта линия в порядке.
Наиболее вероятно, что компилятор жалуется не на само определение макроса, а на использование макроса. Пример:
#define homeid 1234
void homeid() {
}
При компиляции с GCC я получаю:
so.cc:1:16: error: expected unqualified-id before numeric constant
#define homeid 1234
^
so.cc:3:6: note: in expansion of macro ‘homeid
void homeid() {
^
Это говорит о том, что числовая константа, запрашивающая жалобу, является частью определения макроса, но также и то, что этот макрос используется (в данном случае, по-видимому, случайно) в строке 3. Посмотрите, откуда происходит расширение макросов в вашем коде,
Ответ 3
какашка и пердеть пердеть это эпично круто и я наенае