#c #oop #gcc #codelite
#c #ооп #gcc #codelite
Вопрос:
У меня есть проект с несколькими файлами, включая main.cpp и два заголовка. В обоих заголовках ошибка в строке с объявлением имени класса. Сборка любого из файлов или проекта в целом не выдает ошибок или предупреждений. Сама программа выполняется правильно.
Я использую CodeLite IDE и компилятор GCC.
Что может быть причиной такого поведения и может ли это привести к каким-либо проблемам в будущем?
#include <Creature.h>
#include <Party.h>
int main() {
// Does something with the stuff from header files.
return 0;
}
Внутри Creature.h:
#pragma once
class Creature { // Error: expected ';' after top level declarator
// something
};
Внутренняя сторона.h:
#pragma once
class Party { // Error: expected identifier or '('
// something
};
Комментарии:
1. Это на самом деле весь ваш код? Основываясь на ошибке, я предполагаю, что тип где-то не завершается точкой с запятой.
2. @Stephen Newell Да, это вся программа за вычетом содержимого скобок.
Ответ №1:
Ваша среда разработки считает, что файлы заголовков написаны на C (где class
нет ключевого слова, и поэтому Creature
является декларатором), потому что вы дали им обычное расширение, .h
используемое для указания этого. Не делайте этого: используйте .hh
, .hpp
или .hxx
для файлов заголовков C , чтобы инструменты (и люди) знали, что вы пишете, не разбираясь в файле.