Заставить gcc 2.96 обрабатывать апострофы
Вопрос: можно ли заставить gcc 2.96 нормально обрабатывать код с апострофами?ну конечно
писать их только в коментариях или в кавычках с квотингом или использовать в качестве кавычек для обозначения единичного символа.
короче: соблюдать синтаксис C-шного препроцессора
Есть код (не на С)
Какие нафиг кавычки?
Синтаксис языка такой, что в нем используются апострофы без всяких кавычек, как атрибуты типов в Ada.
Короче: ботай свою подпись
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."
Синтаксис языка такой, что в нем используются апострофы без всяких кавычек, как атрибуты типов в Ada.и что?
Если ты используешь C-шный препроцессор, то ты очевидно должен соблюдать синтаксис C-шного препроцесора или использовать что-то более подходящее для твоей задачи.
Прикол в том, что C-шный препроцессор определен стандартом C (ISO-9899) и естественно разработан специально для C. Проблемы использования C-шного препроцессора не для C-шного кода авторов разумеется не волнуют.
Почитай про m4 (стандартная posix-утилита, которая по функциональности и синтаксису похожа на C-шный препроцессор). Может подойдет для твоих нужд.
C-шный препроцессор определен стандартом C (ISO-9899)Я говорю не о стандарте ISO/IEC 9899:1999, а о gcc, который умеет обрабатывать несколько языков (не зря он называется GNU Compiler Collection в частности, ту же Ada, в которой апострофы используются без кавычек.
Не нужно додумывать за авторов gcc, для чего он был сделан Препроцессор gcc, например, имеет специальные опции для работы с "чужими" компиляторами. Естесственно ожидать, что есть и опции, снимающие С-специфичные ограничения.
Почитай про m4За это спасибо, посмотрю.
То, что gcc поддерживает несколько языков, не означает, что у него один frontend для всех языков, но означает, что для каждого языка свой frontend. Препроцессор, который libcpp, имеет отношение только к Си-семейству языков. Frontend для Ады, например, вообще написан на Аде
The C preprocessor is intended to be used only with C, C++, and Objective-C source code. In the past, it has been abused as a general text processor. It will choke on input which does not obey C's lexical rules. For example, apostrophes will be interpreted as the beginning of character constants, and cause errors. Also, you cannot rely on it preserving characteristics of the input which are not significant to C-family languages. If a Makefile is preprocessed, all the hard tabs will be removed, and the Makefile will not work.
Having said that, you can often get away with using cpp on things which are not C. Other Algol-ish programming languages are often safe (Pascal, Ada, etc.) So is assembly, with caution. -traditional-cpp mode preserves more white space, and is otherwise more permissive. Many of the problems can be avoided by writing C or C++ style comments instead of native language comments, and keeping macros simple.
Буду посмотреть m4, по совету .
Оставить комментарий
sevast82
Есть код (не на С который препроцессируется gcc 2.96.В коде используются апострофы.
gcc 2.96 на них говорит: missing terminating ' character.
Вопрос: можно ли заставить gcc 2.96 нормально обрабатывать код с апострофами?
В мане ничего утешительного я не нашел.
Вариант смены версии gcc не предлагать, так как нужно как раз проверить возможность сборки данного кода на разных версиях gcc.