tsl |
Отправлено: 16.06.2005, 06:42 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 65
|
Знанимался разработкой программы. "Никого не трогал." И вдруг на шаге компиляции:
E2040 Declaration terminated incorrectly Compiler error
-----------------------------------------------------------------------------------
A declaration has an extra or incorrect termination symbol, such as a semicolon placed after a function body.
A C++ member function declared in a class with a semicolon between the header and the opening left brace also generates this error.
Выдается это по поводу строки в модуле :
...
extern "C" {
...
Стандартные модули я стараюсь не трогать. Тем более редактировать. Тем не менее ошибка возникла.
Что бы это могло быть? А главное, как от этого избавиться?
|
|
AVC |
Отправлено: 16.06.2005, 08:47 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Бывает, например, если ваш include файл содержит ошибку а следом идут другие include. Ошибка может проявиться только на следующих.
|
|
Георгий |
Отправлено: 16.06.2005, 09:20 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
где то скобка фигурная не закрыта |
|
tsl |
Отправлено: 17.06.2005, 04:43 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 65
|
Прошу прощения. Перечитал свое сообщение и обнаружил неточность. Каким то образом слово пропало . Дело в том, что указанная строка, по которой выдается сообщение, находится в стандартном модуле .
Если кто-то понимает ситуацию, прокоментируйте. |
|
tsl |
Отправлено: 17.06.2005, 04:52 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 65
|
Опять увидел тоже самое. Пропала часть моего предыдущего сообщения. Понял, что запрещены к написанию угловые скобки. В угловых я писал math.h.
Текст
...
extern "C" {
...
находится в модуле math.h.
Каким образом мои действия могут отразиться на компиляции этого модуля? Почему он вообще компилируется? Соответствующая опция вроде бы у меня отключена. |
|
tsl |
Отправлено: 17.06.2005, 06:29 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 65
|
Могу еще добавить интересную информацию о предыдущей ошибке, которую я раскрыл сам. Приложение неожидано для меня выдало ошибку "нарушение защиты памяти". Ни на какой участок текста не ссылалась. При попытке пошагового выполнения выдавало эту ошибку до появления первой линии выполнения.
Понятно, что что-то выходит за границы дозволенного до того как выпоняется первый формальный оператор. Путем тыка и логических рассуждений я пришел к строке:
AnsiString MyException::Path = ExstractFilePath(Application->ExeName);
Здесь заполняется статическое поле класса. В тексте класса:
static AnsiString Path;
По моему мнению происходила попытка выделить часть строки из объекта AnsiString до того как этот объект сформирован.
Попутно для себя я выяснил, что операторы инициализации, т.е. операторы не находящиеся в теле процедур, пошагово выполнить нельзя. Или я не включил какую-нибудь опцию? Если понимаете, прокоментируйте.
Отредактировано tsl — 17/06/2005, 06:33 |
|
Gedeon |
Отправлено: 17.06.2005, 13:20 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
По поводу ошибки: Вы 100% где-то случайно отредактировали какой-нибудь h || hpp файл, откройте папку include и отсортируйте файлы по дате, тот к-рый последний и есть он.
|
|
tsl |
Отправлено: 17.06.2005, 18:05 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 65
|
Были у меня отредактированные файлы. Из Temp//BCB6... извлек (заменил). Непомогает. |
|
Gedeon |
Отправлено: 17.06.2005, 19:06 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Это 100% ошибка где-то в объявлении или в Вашем н-файле или подключенном, если стандартные хидеры не изменены, то у Вас.
|
|
tsl |
Отправлено: 21.06.2005, 14:25 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 65
|
Это ужасно!!!! В одном из файлов проекта объявление класса не было закрыто символом ";". Результат — синтаксическая ошибка в math.h. Ну так можно работать??!!!! |
|
Schumi |
Отправлено: 21.06.2005, 22:32 |
|
Машинист паровоза
Группа: Участник
Сообщений: 206
|
А тебе надо семантическая и лингвистическая проверка?
|
|
tsl |
Отправлено: 22.06.2005, 06:29 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 65
|
Мне надо — корректная работа. Мой хочет видеть ошибка там где она есть.
Не надо неправильно понимать. СИ мне очень нравится, но иногда откровенность, с которой он соединяет файлы (и в какой последовательности!!), достает. Интересно, такая ошибка возникнет, если соединять не инклудами, а пространствами имен?
Отредактировано tsl — 22/06/2005, 06:32 |
|