Visual C ++ Странная ошибка. Не в состоянии компилировать

Я уже некоторое время использую библиотеки allegro 5 для разработки игры на C ++. Сегодня я получил странную ошибку:

У меня есть класс под названием level, У меня есть файл заголовка levelhandler,
Вот как это выглядит:

#pragma once
#include "level.h"
level level_1;

level *currentlevel;

void initialize_levels()
{

currentlevel = &level_1;

}

Когда я пытаюсь скомпилировать, это дает мне странные ошибки, такие как:

error C2086: 'int level' redefinition
error C2143: syntax error : missing ; before 'level_1'

Я помню, что он мог скомпилировать раньше, и я использовал currentlevel->Player.X много раз, но теперь у меня есть много таких, и это дает такие ошибки:

error C2227: left of '->Player' must point to a class/struct/generic type
error C4430: missing type specifier - int assumed

заголовок вставлен из комментария

#pragma once
#include "entity.h"// some more includes
class level {
public:
enum Tileset { ... };
enum Tile { ... };
int tiles[200][200];
player Player;
level(void);
~level(void);
};

0

Решение

Такие ошибки трудно найти, если вы посмотрите на панель «Список ошибок». Выберите View / Output, чтобы показать представление «Output». Строка после ошибки C2086 показывает исходное определение уровня.

Вы заполняете найти

int level;

там, как говорит вам C2086. Если это линия

level level_1;

из вашего первого примера вы должны будете проверить последний заголовочный файл, включенный в ваш модуль компиляции. Это может закончиться int или имеет несбалансированный #if пункт.

Чтобы найти точное местоположение, начните использовать Короткий, Автономный, Правильный (Компилируемый), Пример. Это поможет вам найти ошибку и сэкономит время других благодаря своим хрустальным шарам.

Редактировать:

Другой способ выяснить причину этого неожиданного поведения — увидеть выходные данные препроцессора. Установить Generate Preprocessed File опция на странице свойств проекта C / C ++ / Preprocessor для With line numbers (/P) и посмотри в сгенерированном <sourcefile>.i

Убедитесь, что этот файл level.h содержит то, что вы хотели.

0

Другие решения

Итак, я возился с моим проектом на выходных, и я наконец-то узнал, в чем заключается проблема, которая вызвала у меня столько странных ошибок компилятора. Кажется, у меня было много случаев, когда два заголовочных файла включали друг друга, и компилятору это действительно не нравилось, поэтому я исправил это, и теперь я в порядке. Спасибо всем за помощь и хорошего дня!

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector