Проблема Carbide.C++ при генерации rss
Метаданные
Contents |
Обзор проблемы
Когда создается GUI или UI Design приложение в Carbide C++, среда генерирует множество файлов и исходных кодов.
После очередного создания проекта появилась ошибка:
"syntax error"
На строке с инструкцией:
NAME ENUM
в .RSS файле.
Ключевое слово NAME определяет имя для ресурса из четырех заглавных букв. Это идентификатор, определяющий принадлежность файла .rss к этой программе.
Трудно было понять в чем состоит дело. Тем более для того, кто не знаком со всеми спецификами программирования для Symbian.
Причина проблемы
Причина оказалась в том, что именем проекта было: "EnumeratedText".
Когда Carbide приступил к генерации кода, он извлек первые 4 буквы из имени проекта (т.е. Enum) и перевел их в верхний регистр.
Затем, 4 этих буквы были присвоены тэгу Name в .rss файле:
NAME ENUM
Но ENUM (или enum) является ключевым словом для синтаксиса .rss файлов!
Поэтому и появилось сообщение о синтаксической ошибке.
Другие случаи, когда проявляется ошибка
Я провел небольшое исследование и обнаружил и другие ключевые слова и имена проектов, которые могут привести к такой же ошибке, на этапе пост-генерации. См. таблица 1.
| .Rss Ключевое слово | Пример имени проекта |
|---|---|
| ENUM | enumeration |
| NAME | namespace |
| WORD | wordwrap |
| LONG | longhorn |
| TEXT | texturebelt |
| LINK | links2url |
| BUF8 | BUF8 |
Разрешение проблемы
Даже если имя проекта начинается с 4-х первых букв, которые выписаны в таблицу 1, всё-равно значение тэга Name в .rss файле можно изменить. Например:
NAME ENU2


Как-то статья ни о чем, если честно. Нельзя использовать зарезервированные слова в качестве параметра инструкции NAME в RSS-файле. Carbide, при генерации короткого имени, этого не учитывает - вот и вся проблема. Приведенная вами таблица все зарезервированные слова содержит разве?
Нельзя использовать зарезервированные слова в качестве параметра инструкции NAME в RSS-файле.Carbide, при генерации короткого имени, этого не учитывает - вот и вся проблема.
Приведенная вами таблица все зарезервированные слова содержит разве?