Ожидаемый неквалифицированный идентификатор перед числовой константой для определения числа

Я новичок в 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

какашка и пердеть пердеть это эпично круто и я наенае