Отладочные строки

Модератор: Модераторы

Отладочные строки

Сообщение DedFrend » 04.08.2023 22:00:52

Когда-то давно, когда я еще писал на Фортране, у компилятора была интересная фича. В Фортране, если первым символом в строке является С, то вся строка считается комментарием (примерно как //, но только в начале строки). Это в стандарте языка. А в компиляторе, про который я пишу, можно было в первой строке ставить букву D и тогда, в зависимости от параметров компиляции, такие строки или считались комментариями или компилировались как обычно. Для отладки было очень удобно.
И с тех пор я ни в одном компиляторе, включая и С, я не встречал подобного. Про условную компиляцию я знаю, но на мой вкус, она сильно засоряет текст программы, да и сложнее в использовании. Я подозреваю, что просто способ запатентован и бабок требуют огромных. А жаль. Есть мнения?
DedFrend
постоялец
 
Сообщения: 156
Зарегистрирован: 25.11.2018 12:21:50

Re: Отладочные строки

Сообщение xchgeaxeax » 05.08.2023 17:10:52

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;
}
Что ещё проще нужно? Правда это на С++. Хотелось бы подобного в FPC.
Можно даже так
Код: Выделить всё
#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;
}
xchgeaxeax
постоялец
 
Сообщения: 125
Зарегистрирован: 11.05.2023 03:51:40

Re: Отладочные строки

Сообщение iskander » 06.08.2023 10:33:06

DedFrend писал(а):Когда-то давно, когда я еще писал на Фортране, у компилятора была интересная фича. В Фортране, если первым символом в строке является С, то вся строка считается комментарием (примерно как //, но только в начале строки). Это в стандарте языка. А в компиляторе, про который я пишу, можно было в первой строке ставить букву D и тогда, в зависимости от параметров компиляции, такие строки или считались комментариями или компилировались как обычно. Для отладки было очень удобно.
И с тех пор я ни в одном компиляторе, включая и С, я не встречал подобного. Про условную компиляцию я знаю, но на мой вкус, она сильно засоряет текст программы, да и сложнее в использовании. Я подозреваю, что просто способ запатентован и бабок требуют огромных. А жаль. Есть мнения?

Емнип, первые шесть позиций каждой строки фортрановской программы имели специальный смысл, соответственно такую фишку было несложно реализовать.
Может макрос сойдёт в качестве суррогата?
Код: Выделить всё
program test;
{$macro on}
{$ifdef DEBUG}
  {$define DebugLine:=}
{$else}
  {$define DebugLine:=//}
{$endif}
begin
  DebugLine WriteLn('Debug only line');
  WriteLn('Ordinary line');
end.
iskander
энтузиаст
 
Сообщения: 606
Зарегистрирован: 08.01.2012 18:43:34

Re: Отладочные строки

Сообщение DedFrend » 06.08.2023 11:56:16

Я не спрашивал "как еще можно?" . Я спрашивал "вы такой способ встречали?" .
Меня этот способ подкупает своей тривиальностью. Чего не скажешь про условную компиляцию и, тем более, про макросы, которых в Паскале вообще не предусмотрено.
DedFrend
постоялец
 
Сообщения: 156
Зарегистрирован: 25.11.2018 12:21:50

Re: Отладочные строки

Сообщение iskander » 06.08.2023 15:39:06

DedFrend писал(а):Я не спрашивал "как еще можно?"

Ой.
Вложения
sorry.jpg
iskander
энтузиаст
 
Сообщения: 606
Зарегистрирован: 08.01.2012 18:43:34

Re: Отладочные строки

Сообщение DedFrend » 06.08.2023 21:51:18

Если кто-то обиделся, приношу свои извинения. Я тоже "больше так не буду". Но интересно все-таки почему такой старый и простой прием не применяется нигде. Или где-то есть ?
DedFrend
постоялец
 
Сообщения: 156
Зарегистрирован: 25.11.2018 12:21:50

Re: Отладочные строки

Сообщение Sharfik » 07.08.2023 02:48:52

ИМХО, не удобно очень. Читать кол замечаешься с такими буквами. Вариант
Код: Выделить всё
  {$IFDEF WINDOWS} Windows, {$ENDIF}

гораздо приличнее.

ПС: У патента есть строк жизни, он уже должен был истечь. Плюс кто будет изучать Фортран сейчас? Им PAscal то лень изучить, всем модный Питон подавай :mrgreen: :mrgreen: .. фу пакость.. "пошел рот мыть".
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 791
Зарегистрирован: 20.07.2013 01:04:30

Re: Отладочные строки

Сообщение Vapaamies » 07.08.2023 04:17:01

DedFrend писал(а):Но интересно все-таки почему такой старый и простой прием не применяется нигде. Или где-то есть ?

Смотрел много языков, тоже нигде не видел. Утащил в концепции себе — как развитие идеи поколений кода (в данный момент для просмотра этой ветки нужна регистрация на форуме — раздел закрыт на ревизию).
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург


Вернуться в IDE, компилятор, отладчик

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru