C++ #define的奇怪用法之下划线代码

介绍一些C++ #define的奇怪用法

众所周知,#define可以定义变量
但#define有一种特殊的用法,即写下划线代码

eg:

  • #define _ using

    然后我们就可以写_ namespace std
  • 如果还不够:

#define _ using
#define __ namespace
#define ____ std
_ __ ___
int main()
{
    ...
}
  • 注意:#includeiostream等库不能用#define
  • 下面来一波下划线代码:
#define _ using
#define __ namespace
#define ___ std
#define ____ ;
#define _____ int
#define ______ main
#define _______ (
#define ________ )
#define _________ {
#define __________ cout
#define ___________ <<
#define ____________ "Hello, World!"
#define _____________ endl
#define ______________ return
#define _______________ 0
#define ________________ }

#include <iostream>

_ __ ___ ____

_____ ______ _______ ________
_________
    __________ ___________ ____________ ___________ _____________ ____
    ______________ _______________ ____
________________

(其实是HelloWorld代码)

  • tips:

    1. 括号支持#define
    2. 数字、字符串支持#define
    3. 除了#意外的特殊字符都支持#define
  • 最长的Hello, World!

普通版本 Link:最长的Hello, World!(C++)

#include <iostream>
#include <string>
#include <vector>
#include <memory>
#include <random>

_<typename T>
class Node
{
public:
    T data;
    std::shared_ptr<Node<T>> next;

    Node(const T &value) : data(value), next(nullptr)
    {}
};

_<typename T>
class LinkedList
{
public:
    LinkedList() : head(nullptr)
    {}

    void append(const T &value)
    {
        auto newNode = std::make_shared<Node<T>>(value);
        if (!head)
        {
            head = newNode;
        } else
        {
            auto current = head;
            while (current->next)
            {
                current = current->next;
            }
            current->next = newNode;
        }
    }

    void print() const
    {
        auto current = head;
        while (current)
        {
            std::cout << current->data;
            if (current->next)
            {
                std::cout << " ";
            }
            current = current->next;
        }
        std::cout << "";
    }

private:
    std::shared_ptr<Node<T>> head;
};

class MessageBuilder
{
public:
    MessageBuilder()
    {
        list.append("Hello,");
        list.append("World!");
    }

    LinkedList<std::string> getMessage()
    {
        return list;
    }

private:
    LinkedList<std::string> list;
};

class Printer
{
public:
    Printer() : messageBuilder()
    {}

    void printMessage()
    {
        try
        {
            LinkedList<std::string> messageList = messageBuilder.getMessage();
            messageList.print();
        } catch (const std::exception &e)
        {
            std::cerr << "Error printing message: " << e.what();
        }
    }

private:
    MessageBuilder messageBuilder;
};

class Application
{
public:
    Application() : printer()
    {}

    void run()
    {
        printer.printMessage();
    }

private:
    Printer printer;
};

int main()
{
    Application app;
    app.run();
    return 0;
}

下划线版本:

#define _ template
#define __ typename
#define ___ T
#define ____ class
#define _____ Node
#define ______ public
#define _______ data
#define ________ std
#define _________ (
#define __________ )
#define ___________ {
#define ____________ }
#define _____________ :
#define ______________ ;
#define _______________ 0
#define _________________ ::
#define __________________ =
#define ___________________ shared_ptr
#define ____________________ next
#define _____________________ const
#define ______________________ &
#define _______________________ value
#define ________________________ ,
#define _________________________ "Hello,"
#define __________________________ "World!"
#define ___________________________ nullptr
#define ____________________________ LinkedList
#define _____________________________ head
#define ______________________________ void
#define _______________________________ append
#define ________________________________ auto
#define _________________________________ make_shared
#define __________________________________ <
#define ___________________________________ >
#define ____________________________________ >>
#define _____________________________________ if
#define ______________________________________ else
#define _______________________________________ !
#define ________________________________________ current
#define _________________________________________ ->
#define __________________________________________ while
#define ___________________________________________ print
#define ____________________________________________ ""
#define _____________________________________________ " "
#define ______________________________________________ cout
#define _______________________________________________ <<
#define ________________________________________________ private
#define _________________________________________________ MessageBuilder
#define __________________________________________________ messageBuilder
#define ___________________________________________________ list
#define ____________________________________________________ .
#define _____________________________________________________ string
#define ______________________________________________________ getMessage
#define _______________________________________________________ return
#define ________________________________________________________ Printer
#define _________________________________________________________ Message
#define __________________________________________________________ try
#define ___________________________________________________________ messageList
#define ____________________________________________________________ catch
#define _____________________________________________________________ exception
#define ______________________________________________________________ what
#define _______________________________________________________________ e
#define ________________________________________________________________ cerr
#define _________________________________________________________________ Application
#define __________________________________________________________________ er
#define ___________________________________________________________________ run
#define ____________________________________________________________________ app
#define _____________________________________________________________________ int
#define ______________________________________________________________________ main
#define _______________________________________________________________________ \

#include <iostream>
#include <string>
#include <vector>
#include <memory>
#include <random>

_ __________________________________ __ ___ ___________________________________
____ _____
___________
______ _____________
    ___ _______ ______________
    ________ _________________ ___________________ __________________________________ _____ _______________________________________________________________________
    __________________________________ ___ ____________________________________ ____________________ ______________

    _____ _________ _____________________ ___ ______________________ _______________________ _______________________________________________________________________
    __________ _____________ _______ _________ _______________________________________________________________________
    _______________________ __________ ________________________ ____________________ _________ _______________________________________________________________________
    ___________________________ __________
    ___________
    ____________
    ____________ ______________

_ __________________________________ __ ___ ___________________________________
____ ____________________________
___________
______ _____________
    ____________________________ _________ __________ _____________ _____________________________ _______________________________________________________________________
    _________ ___________________________ __________
    ___________ ____________
    ______________________________ _______________________________ _________ _____________________ _______________________________________________________________________
    ___ ______________________ _______________________ __________
    ___________
        ________________________________ ________________ __________________ _______________________________________________________________________
        ________ _________________ _________________________________  __________________________________ _______________________________________________________________________
        _____ __________________________________ ___ ____________________________________ _______________________________________________________________________
        _________  _______________________ __________ ______________
        _____________________________________ _________ _______________________________________ _______________________________________________________________________
        _____________________________ __________
        ___________
            _____________________________ __________________ ________________ ______________
        ____________ ______________________________________
        ___________
            ________________________________ ________________________________________ _______________________________________________________________________
            __________________ _____________________________ ______________
            __________________________________________ _________  _______________________________________________________________________
            ________________________________________ _______________________________________________________________________
            _________________________________________ ____________________  __________
            ___________
                ________________________________________ __________________ _______________________________________________________________________
                ________________________________________ _________________________________________ _______________________________________________________________________
                ____________________ ______________
            ____________
            ________________________________________ _________________________________________ _______________________________________________________________________
            ____________________ __________________ ________________ ______________
        ____________
    ____________

    ______________________________ ___________________________________________ _______________________________________________________________________
    _________ __________ _____________________
    ___________
        ________________________________ ________________________________________ _______________________________________________________________________
        __________________ _____________________________ ______________
        __________________________________________ _________ ________________________________________ __________
        ___________
            ________ _________________ ______________________________________________ _______________________________________________________________________
            _______________________________________________ ________________________________________ _______________________________________________________________________
            _________________________________________ _______ ______________
            _____________________________________ _________ ________________________________________ _______________________________________________________________________
            _________________________________________ ____________________ __________
            ___________
                ________ _________________ ______________________________________________ _______________________________________________________________________
                _______________________________________________ _______________________________________________________________________
                _____________________________________________ ______________
            ____________
            ________________________________________ __________________ ________________________________________ _______________________________________________________________________
            _________________________________________ ____________________ ______________
        ____________
        ________ _________________ ______________________________________________ _______________________________________________________________________
        _______________________________________________ ____________________________________________ ______________
    ____________

________________________________________________ _____________
    ________ _________________ ___________________ __________________________________ _____ _______________________________________________________________________
    __________________________________ ___ ____________________________________ _______________________________________________________________________
    _____________________________ ______________
____________ ______________

____ _________________________________________________
___________
______ _____________
    _________________________________________________ _________ __________
    ___________
        ___________________________________________________ ____________________________________________________ _______________________________________________________________________
        _______________________________ _________ _________________________ __________ ______________
        ___________________________________________________ ____________________________________________________ _______________________________________________________________________
        _______________________________ _________ __________________________ __________ ______________
    ____________

    ____________________________ __________________________________ ________ _________________ _______________________________________________________________________
    _____________________________________________________ ___________________________________ _______________________________________________________________________
    ______________________________________________________  _________ __________
    ___________
        _______________________________________________________ _______________________________________________________________________
        ___________________________________________________ ______________
    ____________

________________________________________________ _____________
    ____________________________ __________________________________ ________ _________________ _______________________________________________________________________
    _____________________________________________________ ___________________________________ _______________________________________________________________________
    ___________________________________________________ ______________
____________ ______________

____ ________________________________________________________
___________
______ _____________
    ________________________________________________________ _________ __________ _______________________________________________________________________
    _____________ __________________________________________________ _________ __________
    ___________
    ____________

    ______________________________ _______________________________________________________________________
    ____________________________________________________________________________________________________ _______________________________________________________________________
    _________ __________
    ___________
        __________________________________________________________
        ___________
            ____________________________ __________________________________ ________ _________________ _______________________________________________________________________
            _____________________________________________________ ___________________________________ _______________________________________________________________________
            ___________________________________________________________ __________________ _______________________________________________________________________
            __________________________________________________ _______________________________________________________________________
            ____________________________________________________ _______________________________________________________________________
            ______________________________________________________ _______________________________________________________________________
            _________ __________ ______________
            ___________________________________________________________ _______________________________________________________________________
            ____________________________________________________ _______________________________________________________________________
            ___________________________________________ _________ __________ ______________
        ____________ ____________________________________________________________   _________ _______________________________________________________________________
        _____________________ ________ _________________ _______________________________________________________________________
        _____________________________________________________________ ______________________ _______________________________________________________________________
        ______________________________________________________________  __________
        ___________
            ________ _________________ ________________________________________________________________ _______________________________________________________________________
            _______________________________________________ ____________________________________________
            _______________________________________________ _______________________________________________________________________
            ______________________________________________________________ _______________________________________________________________________
            ____________________________________________________ _______________________________________________________________________
            ______________________________________________________________ _________ __________ ______________
        ____________
    ____________

________________________________________________ _____________
    _________________________________________________ __________________________________________________ ______________
____________ ______________

____ _________________________________________________________________
___________
______ _____________
    _________________________________________________________________ _______________________________________________________________________
    _________ __________ _____________ _______________________________________________________________________
    _____________________________________________________________________________________________________________ _______________________________________________________________________
    _________ __________
    ___________ ____________
    ______________________________ ___________________________________________________________________ _________ __________
    ___________
        _____________________________________________________________________________________________________________ _______________________________________________________________________
        ____________________________________________________ _______________________________________________________________________
        ____________________________________________________________________________________________________ _______________________________________________________________________
        _________ __________ ______________
    ____________

________________________________________________ _____________
    ________________________________________________________ _______________________________________________________________________
    _____________________________________________________________________________________________________________ _______________________________________________________________________
    ______________
____________ ______________

_____________________________________________________________________ _______________________________________________________________________
______________________________________________________________________ _________ __________
___________
    _________________________________________________________________ _______________________________________________________________________
    ____________________________________________________________________ ______________
    ____________________________________________________________________ _______________________________________________________________________
    ____________________________________________________ _______________________________________________________________________
    ___________________________________________________________________ _________ __________ ______________
    _______________________________________________________ _______________ ______________
____________

(可运行!!!)

posted @ 2024-07-27 21:40  avrox  阅读(161)  评论(0)    收藏  举报