好好好,这样写是吧

我突然有了更深的理解,谢谢UP:
#include <iostream>
#include <cstdint>
// CPU Architecture Detection
#if defined(__x86_64__)
#define ARCH "x86_64"
#elif defined(__i386__)
#define ARCH "x86"
#elif defined(__arm__)
#define ARCH "ARM"
#else
#define ARCH "Unknown"
#endif
#define BEGIN int main() {
#define END return 0; }
#define CODE0 if
#define CODE1 elif
#define CODE2 else
#define ADD(x, y) x + y
#define SUB(x, y) x - y
#define MUL(x, y) x * y
#define DIV(x, y) x / y
#define ALLOC(size) (int*)malloc(size * sizeof(int))
#define FILL(data, code) do { \
for (int i = 0; i < sizeof(data)/sizeof(data[0]); i++) { \
data[i] = code; \
} \
} while (0)
#define EXEC(func, args) func(args)
#define ARRAY int* array;
#define FUNCTION int function(int* data, int size) {
#define LOOP for (int i = 0; i < size; i++) {
#define CHECK0 if (i == size) goto code2;
#define CHECK1 if (i[data] & 1) goto code1;
#define OPER result += i[data];
#define MODIFY i -= 0xFFFFFFFF;
#define GOTO0 goto code0;
#define GOTO1 goto code1;
#define GOTO2 goto code2;
#define RETURN return result; }
BEGIN
ARRAY
if (ARCH == "x86_64") {
array = ALLOC(6);
FILL(array, 0x90);
EXEC((int(*)(int*, int))array, array);
} else if (ARCH == "x86") {
array = ALLOC(6);
FILL(array, 0x91);
EXEC((int(*)(int*, int))array, array);
} else if (ARCH == "ARM") {
array = ALLOC(6);
FILL(array, 0xE1A00000);
EXEC((int(*)(int*, int))array, array);
} else {
array = nullptr;
}
FUNCTION
int result = 0;
LOOP
CHECK0
CHECK1
OPER
MODIFY
GOTO0
CODE1
MODIFY
GOTO0
CODE2
RETURN
END
if (array) free(array);