извращения на с++

Тема в разделе "Машинное отделение", создана пользователем krey, 24 окт 2007.

  1. krey
    Оффлайн

    krey Михаил Кройтор Команда форума Команда форума

    Репутация:
    1
    я занимаюсь повторным использованием программного кода. одним из старейших способов повторного использования есть макроопределения. способ действительно мощный, но у него такое количество минусов, что лучше им не пользоваться - поэтому от макросов в новых языках отказываются. посмотрите до чего можно дойти на С++!
    Код:
    #include "instructions.h"
    
    INITIALIZE
    
    DECLAREVARS
        INTEGER variable, sum;
    
    MAINBLOCK
    BEGIN
        WRITE 
            SCREEN("enter a number: ")
        ENDWRITE
        
        INPUT(variable)
        sum = 0;
        CICLE(1, variable)
        BEGIN
            sum = sum + COUNT;
        END
        
        WRITE 
            SCREEN("result: ") 
            SCREEN(sum) 
            ENDLINE
        ENDWRITE
    END
     
  2. Chemer
    Оффлайн

    Chemer Максим

    Репутация:
    0
    Гдето на каком-то форуме, видел на макросах под си язык "ПРЕВЕД", причем тему развили листов на пять. Народу "ПРЕВЕД" понравилсо. Типа того:
    Код:
    //
    
    // Превед.cpp : Defines the entry point for the console application.
    
    //
    
    
    
    #include <iostream>
    
    #include <locale.h>
    
    
    
    //—————————————————————————————————
    
    // The PREVED Language Kernel area. Do not touch! :)
    
    
    
    #if !defined (_MSC_VER) || _MSC_VER < 1400
    
    
    
    #error Wrong compiler! Use MSVS 8.0
    
    #endif
    
    
    
    #define НАЧЕЛ      {
    
    
    
    #define КОНЧЕЛ     ;}
    
    #define ТИПА       int
    
    #define ВДРУГ      if (
    
    
    
    #define ТАДА       )
    
    #define НИХРИНА    else
    
    #define ВЗАД       return
    
    
    
    #define КАГДИЛА    (
    
    #define ЙО         ;
    
    #define ЖЖОШ(p,n)  for (; (p) <= (n); (p)++)
    
    
    
    #define БАЗАР      std::cout << 
    
    #define СЛЫШЬ      << 
    
    #define СТОЙ       system ("echo. & pause");
    
    
    
    #define БЛИН       _wsetlocale (LC_ALL, L"Russian_Russia.ACP");
    
    
    
    #define ВРОДЕ      try 
    
    
    
    #define ИБАНУЦЦО   throw
    
    #define АПСТЕНУ    catch (const char* __чё__)
    
    
    
    #define ПРЕВЕД     ТИПА main КАГДИЛА ТАДА
    
    #define МЕДВЕД     ВЗАД 0; КОНЧЕЛ
    
    
    
    // End of area
    
    //—————————————————————————————————
    
    
    
    ТИПА КРУТО КАГДИЛА ТИПА фигня ТАДА
    
    
    
        НАЧЕЛ
    
        БАЗАР "ВАЩЕ " ЙО
    
        ВДРУГ фигня == 8 ТАДА ИБАНУЦЦО "мля! " ЙО
    
    
    
        ВЗАД 0
    
        КОНЧЕЛ
    
    
    
    ПРЕВЕД
    
        НАЧЕЛ
    
        БЛИН
    
    
    
        ВРОДЕ НАЧЕЛ
    
    
    
        ТИПА фишка = 0 ЙО
    
    
    
        ЖЖОШ (фишка, 10)
    
            НАЧЕЛ
    
            БАЗАР фишка СЛЫШЬ " "; 
    
            ВДРУГ фишка >= 5 ТАДА КРУТО (фишка) ЙО
    
    
    
            КОНЧЕЛ
    
    
    
        КОНЧЕЛ АПСТЕНУ НАЧЕЛ
    
            БАЗАР "ИБАНУЦЦО invoked: " СЛЫШЬ __чё__;
    
    
    
        КОНЧЕЛ
    
    
    
        СТОЙ
    
    МЕДВЕД