Отладочные строки
Модератор: Модераторы
Отладочные строки
Когда-то давно, когда я еще писал на Фортране, у компилятора была интересная фича. В Фортране, если первым символом в строке является С, то вся строка считается комментарием (примерно как //, но только в начале строки). Это в стандарте языка. А в компиляторе, про который я пишу, можно было в первой строке ставить букву D и тогда, в зависимости от параметров компиляции, такие строки или считались комментариями или компилировались как обычно. Для отладки было очень удобно.
И с тех пор я ни в одном компиляторе, включая и С, я не встречал подобного. Про условную компиляцию я знаю, но на мой вкус, она сильно засоряет текст программы, да и сложнее в использовании. Я подозреваю, что просто способ запатентован и бабок требуют огромных. А жаль. Есть мнения?
И с тех пор я ни в одном компиляторе, включая и С, я не встречал подобного. Про условную компиляцию я знаю, но на мой вкус, она сильно засоряет текст программы, да и сложнее в использовании. Я подозреваю, что просто способ запатентован и бабок требуют огромных. А жаль. Есть мнения?
-
xchgeaxeax
- постоялец
- Сообщения: 207
- Зарегистрирован: 11.05.2023 02:51:40
DedFrend писал(а):Про условную компиляцию я знаю, но на мой вкус, она сильно засоряет текст программы, да и сложнее в использовании. Я подозреваю, что просто способ запатентован и бабок требуют огромных.
Код: Выделить всё
#include <iostream>
#define __DEBUG__
#ifdef __DEBUG__
# define D(x) x
#else
# define D(x)
#endif
int main(int argc, char* argv[]) {
D(std::cout << "Debug message\n";)
std::cout << "Hello world!" << std::endl;
return 0;
}Можно даже так
Код: Выделить всё
#include <iostream>
#define __DEBUG__
#ifdef __DEBUG__
# define D(x) x
#else
# define D(x)
#endif
D(void DebugPrint(std::string str) {)
D( std::cout << "DEBUG: " << str << "\n";)
D(})
int main(int argc, char* argv[]) {
D(DebugPrint("Debug message");)
std::cout << "Hello world!" << std::endl;
return 0;
}Емнип, первые шесть позиций каждой строки фортрановской программы имели специальный смысл, соответственно такую фишку было несложно реализовать.DedFrend писал(а):Когда-то давно, когда я еще писал на Фортране, у компилятора была интересная фича. В Фортране, если первым символом в строке является С, то вся строка считается комментарием (примерно как //, но только в начале строки). Это в стандарте языка. А в компиляторе, про который я пишу, можно было в первой строке ставить букву D и тогда, в зависимости от параметров компиляции, такие строки или считались комментариями или компилировались как обычно. Для отладки было очень удобно.
И с тех пор я ни в одном компиляторе, включая и С, я не встречал подобного. Про условную компиляцию я знаю, но на мой вкус, она сильно засоряет текст программы, да и сложнее в использовании. Я подозреваю, что просто способ запатентован и бабок требуют огромных. А жаль. Есть мнения?
Может макрос сойдёт в качестве суррогата?
Код: Выделить всё
program test;
{$macro on}
{$ifdef DEBUG}
{$define DebugLine:=}
{$else}
{$define DebugLine:=//}
{$endif}
begin
DebugLine WriteLn('Debug only line');
WriteLn('Ordinary line');
end.
Я не спрашивал "как еще можно?" . Я спрашивал "вы такой способ встречали?" .
Меня этот способ подкупает своей тривиальностью. Чего не скажешь про условную компиляцию и, тем более, про макросы, которых в Паскале вообще не предусмотрено.
Меня этот способ подкупает своей тривиальностью. Чего не скажешь про условную компиляцию и, тем более, про макросы, которых в Паскале вообще не предусмотрено.
Если кто-то обиделся, приношу свои извинения. Я тоже "больше так не буду". Но интересно все-таки почему такой старый и простой прием не применяется нигде. Или где-то есть ?
ИМХО, не удобно очень. Читать кол замечаешься с такими буквами. Вариант
гораздо приличнее.
ПС: У патента есть строк жизни, он уже должен был истечь. Плюс кто будет изучать Фортран сейчас? Им PAscal то лень изучить, всем модный Питон подавай
.. фу пакость.. "пошел рот мыть".
Код: Выделить всё
{$IFDEF WINDOWS} Windows, {$ENDIF}ПС: У патента есть строк жизни, он уже должен был истечь. Плюс кто будет изучать Фортран сейчас? Им PAscal то лень изучить, всем модный Питон подавай
- Vapaamies
- постоялец
- Сообщения: 292
- Зарегистрирован: 24.07.2012 22:37:59
- Откуда: Санкт-Петербург
- Контактная информация:
Смотрел много языков, тоже нигде не видел. Утащил в концепции себе — как развитие идеи поколений кода (в данный момент для просмотра этой ветки нужна регистрация на форуме — раздел закрыт на ревизию).DedFrend писал(а):Но интересно все-таки почему такой старый и простой прием не применяется нигде. Или где-то есть ?
