C++ #define的奇怪用法之下划线代码
介绍一些C++ #define的奇怪用法
众所周知,#define可以定义变量
但#define有一种特殊的用法,即写下划线代码
eg:
-
#define _ using
然后我们就可以写_ namespace std了 -
如果还不够:
#define _ using
#define __ namespace
#define ____ std
_ __ ___
int main()
{
...
}
- 注意:
#、include与iostream等库不能用#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>
_ __________________________________ __ ___ ___________________________________
____ _____
___________
______ _____________
___ _______ ______________
________ _________________ ___________________ __________________________________ _____ _______________________________________________________________________
__________________________________ ___ ____________________________________ ____________________ ______________
_____ _________ _____________________ ___ ______________________ _______________________ _______________________________________________________________________
__________ _____________ _______ _________ _______________________________________________________________________
_______________________ __________ ________________________ ____________________ _________ _______________________________________________________________________
___________________________ __________
___________
____________
____________ ______________
_ __________________________________ __ ___ ___________________________________
____ ____________________________
___________
______ _____________
____________________________ _________ __________ _____________ _____________________________ _______________________________________________________________________
_________ ___________________________ __________
___________ ____________
______________________________ _______________________________ _________ _____________________ _______________________________________________________________________
___ ______________________ _______________________ __________
___________
________________________________ ________________ __________________ _______________________________________________________________________
________ _________________ _________________________________ __________________________________ _______________________________________________________________________
_____ __________________________________ ___ ____________________________________ _______________________________________________________________________
_________ _______________________ __________ ______________
_____________________________________ _________ _______________________________________ _______________________________________________________________________
_____________________________ __________
___________
_____________________________ __________________ ________________ ______________
____________ ______________________________________
___________
________________________________ ________________________________________ _______________________________________________________________________
__________________ _____________________________ ______________
__________________________________________ _________ _______________________________________________________________________
________________________________________ _______________________________________________________________________
_________________________________________ ____________________ __________
___________
________________________________________ __________________ _______________________________________________________________________
________________________________________ _________________________________________ _______________________________________________________________________
____________________ ______________
____________
________________________________________ _________________________________________ _______________________________________________________________________
____________________ __________________ ________________ ______________
____________
____________
______________________________ ___________________________________________ _______________________________________________________________________
_________ __________ _____________________
___________
________________________________ ________________________________________ _______________________________________________________________________
__________________ _____________________________ ______________
__________________________________________ _________ ________________________________________ __________
___________
________ _________________ ______________________________________________ _______________________________________________________________________
_______________________________________________ ________________________________________ _______________________________________________________________________
_________________________________________ _______ ______________
_____________________________________ _________ ________________________________________ _______________________________________________________________________
_________________________________________ ____________________ __________
___________
________ _________________ ______________________________________________ _______________________________________________________________________
_______________________________________________ _______________________________________________________________________
_____________________________________________ ______________
____________
________________________________________ __________________ ________________________________________ _______________________________________________________________________
_________________________________________ ____________________ ______________
____________
________ _________________ ______________________________________________ _______________________________________________________________________
_______________________________________________ ____________________________________________ ______________
____________
________________________________________________ _____________
________ _________________ ___________________ __________________________________ _____ _______________________________________________________________________
__________________________________ ___ ____________________________________ _______________________________________________________________________
_____________________________ ______________
____________ ______________
____ _________________________________________________
___________
______ _____________
_________________________________________________ _________ __________
___________
___________________________________________________ ____________________________________________________ _______________________________________________________________________
_______________________________ _________ _________________________ __________ ______________
___________________________________________________ ____________________________________________________ _______________________________________________________________________
_______________________________ _________ __________________________ __________ ______________
____________
____________________________ __________________________________ ________ _________________ _______________________________________________________________________
_____________________________________________________ ___________________________________ _______________________________________________________________________
______________________________________________________ _________ __________
___________
_______________________________________________________ _______________________________________________________________________
___________________________________________________ ______________
____________
________________________________________________ _____________
____________________________ __________________________________ ________ _________________ _______________________________________________________________________
_____________________________________________________ ___________________________________ _______________________________________________________________________
___________________________________________________ ______________
____________ ______________
____ ________________________________________________________
___________
______ _____________
________________________________________________________ _________ __________ _______________________________________________________________________
_____________ __________________________________________________ _________ __________
___________
____________
______________________________ _______________________________________________________________________
____________________________________________________________________________________________________ _______________________________________________________________________
_________ __________
___________
__________________________________________________________
___________
____________________________ __________________________________ ________ _________________ _______________________________________________________________________
_____________________________________________________ ___________________________________ _______________________________________________________________________
___________________________________________________________ __________________ _______________________________________________________________________
__________________________________________________ _______________________________________________________________________
____________________________________________________ _______________________________________________________________________
______________________________________________________ _______________________________________________________________________
_________ __________ ______________
___________________________________________________________ _______________________________________________________________________
____________________________________________________ _______________________________________________________________________
___________________________________________ _________ __________ ______________
____________ ____________________________________________________________ _________ _______________________________________________________________________
_____________________ ________ _________________ _______________________________________________________________________
_____________________________________________________________ ______________________ _______________________________________________________________________
______________________________________________________________ __________
___________
________ _________________ ________________________________________________________________ _______________________________________________________________________
_______________________________________________ ____________________________________________
_______________________________________________ _______________________________________________________________________
______________________________________________________________ _______________________________________________________________________
____________________________________________________ _______________________________________________________________________
______________________________________________________________ _________ __________ ______________
____________
____________
________________________________________________ _____________
_________________________________________________ __________________________________________________ ______________
____________ ______________
____ _________________________________________________________________
___________
______ _____________
_________________________________________________________________ _______________________________________________________________________
_________ __________ _____________ _______________________________________________________________________
_____________________________________________________________________________________________________________ _______________________________________________________________________
_________ __________
___________ ____________
______________________________ ___________________________________________________________________ _________ __________
___________
_____________________________________________________________________________________________________________ _______________________________________________________________________
____________________________________________________ _______________________________________________________________________
____________________________________________________________________________________________________ _______________________________________________________________________
_________ __________ ______________
____________
________________________________________________ _____________
________________________________________________________ _______________________________________________________________________
_____________________________________________________________________________________________________________ _______________________________________________________________________
______________
____________ ______________
_____________________________________________________________________ _______________________________________________________________________
______________________________________________________________________ _________ __________
___________
_________________________________________________________________ _______________________________________________________________________
____________________________________________________________________ ______________
____________________________________________________________________ _______________________________________________________________________
____________________________________________________ _______________________________________________________________________
___________________________________________________________________ _________ __________ ______________
_______________________________________________________ _______________ ______________
____________
(可运行!!!)
本文来自博客园,作者:avrox,转载请注明原文链接:https://www.cnblogs.com/avrox/p/18327544

浙公网安备 33010602011771号