LINUX.ORG.RU

История изменений

Исправление LamerOk, (текущая версия) :

В случае printf все его разумные применения это семейство безопасных функций которое вполне укладывается (...) в систему типов С++

Верно. Но решать эту задачу языковыми средствами С/С++ не удобно. А задача типовая.

А произвольный «DSL» my_eval(«``DSL`` lines here», ...) будет настолько хорош насколько будет хорош интерпретатор my_eval

Тоже верно.

В таком случае (если DSL достаточно сложный и нужны проверки в compile-time) лучше сделать внешний язык *.dsl -> *.cc

Опять же верно, именно так и делают - см. lex/yacc.

Но форматная строка принтфа - промежуточный случай. Делать внешний препроцессор - оверкилл, всех устраивает текущее решение, которое является компромиссом между удобством использования и «безопасностью».

Исходная версия LamerOk, :

В случае printf все его разумные применения это семейство безопасных функций которое вполне укладывается (...) в систему типов С++

Верно. Но решать эту задачу языковыми средствами С/С++ не удобно. А задача типовая.

А произвольный «DSL» my_eval(«``DSL`` lines here», ...) будет настолько хорош насколько будет хорош интерпретатор my_eval

Тоже верно.

В таком случае (если DSL достаточно сложный и нужны проверки в compile-time) лучше сделать внешний язык *.dsl -> *.cc

Опять же верно, именно так и делают - см. lex/yacc.

Но форматная строка принтфа - промежуточный случай. Делать внешний перпроцессор - оверкилл, всех устраивает текущее решение, которое является компромиссом между удобством использования и «безопасностью».