- 1
Пиздец-оффтоп #133
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Пиздец-оффтоп #133
#103: https://govnokod.ru/28982 https://govnokod.xyz/_28982
#104: https://govnokod.ru/28989 https://govnokod.xyz/_28989
#105: https://govnokod.ru/29052 https://govnokod.xyz/_29052
#106: https://govnokod.ru/29069 https://govnokod.xyz/_29069
#107: (vanished) https://govnokod.xyz/_29086
#108: https://govnokod.ru/29102 https://govnokod.xyz/_29102
#109: https://govnokod.ru/29126 https://govnokod.xyz/_29126
#110: https://govnokod.ru/29136 https://govnokod.xyz/_29136
#111: https://govnokod.ru/29142 https://govnokod.xyz/_29142
#112: https://govnokod.ru/29155 https://govnokod.xyz/_29155
#113: https://govnokod.ru/29160 https://govnokod.xyz/_29160
#114: https://govnokod.ru/29165 https://govnokod.xyz/_29165
#115: https://govnokod.ru/29173 https://govnokod.xyz/_29173
#116: https://govnokod.ru/29174 https://govnokod.xyz/_29174
#117: https://govnokod.ru/29182 https://govnokod.xyz/_29182
#118: https://govnokod.ru/29191 https://govnokod.xyz/_29191
#119: https://govnokod.ru/29196 https://govnokod.xyz/_29196
#120: https://govnokod.ru/29205 https://govnokod.xyz/_29205
#121: https://govnokod.ru/29216 https://govnokod.xyz/_29216
#122: https://govnokod.ru/29219 https://govnokod.xyz/_29219
#123: https://govnokod.ru/29232 https://govnokod.xyz/_29232
#124: https://govnokod.ru/29237 https://govnokod.xyz/_29237
#125: https://govnokod.ru/29239 https://govnokod.xyz/_29239
#126: https://govnokod.ru/29244 https://govnokod.xyz/_29244
#127: https://govnokod.ru/29248 https://govnokod.xyz/_29248
#128: https://govnokod.ru/29251 https://govnokod.xyz/_29251
#129: https://govnokod.ru/29257 https://govnokod.xyz/_29257
#130: https://govnokod.ru/29266 https://govnokod.xyz/_29266
#131: https://govnokod.ru/29270 https://govnokod.xyz/_29270
#132: https://govnokod.ru/29277 https://govnokod.xyz/_29277
+1
#include <stdio.h>
typedef struct true_t {
char _;
} true_t;
true_t TRUE;
typedef struct false_t {
char _;
} false_t;
false_t FALSE;
int f_true() {
return 1;
}
int f_false() {
return 0;
}
#define bool_v(B) _Generic((B *) (0), true_t *: TRUE, false_t *: FALSE)
#define bool_v_to_int(B) _Generic(B, true_t: 1, false_t: 0)
#define v_to_bool(V) typeof(V)
#define is_string_v(X) _Generic((X), \
char *: 1, \
default: 0)
#define is_string_t(X) typeof(_Generic((X), \
char *: TRUE, \
default: FALSE))
#define has_signature_v(X, R, ...) \
_Generic((X), \
SignatureM(R, __VA_ARGS__): 1, \
default: 0)
#define has_signature_t(X, R, ...) \
typeof(_Generic((X), \
SignatureM(R, __VA_ARGS__): TRUE, \
default: FALSE))
#define to_string(x) _Generic((x), \
true_t: "true", \
false_t: "false", \
char*: x, \
const char*: x)
#define has_same_type_v(X, Y) \
_Generic(has_same_type_t(X, Y), \
true_t: 1, \
false_t: 0)
#define has_same_type_t(X, Y) typeof(_Generic((X), \
typeof(Y): TRUE, \
default: FALSE))
#define SignatureM(R, ...) R (*)(__VA_ARGS__)
#define is_same_t(X, Y) \
typeof(_Generic(((X *) (0)), \
Y *: TRUE, \
default: FALSE))
#define and_t(X, Y) \
typeof(_Generic(bool_v(X), \
true_t: _Generic(bool_v(Y), true_t: TRUE, false_t: FALSE), \
false_t: _Generic(bool_v(Y), true_t: FALSE, false_t: FALSE)))
#define or_t(X, Y) \
typeof(_Generic(bool_v(X), \
true_t: _Generic(bool_v(Y), true_t: TRUE, false_t: TRUE), \
false_t: _Generic(bool_v(Y), true_t: TRUE, false_t: FALSE)))
#define not_t(X) \
typeof(_Generic(bool_v(X), \
true_t: FALSE, \
false_t: TRUE))
#define result_t(X, ...) typeof((X) (__VA_ARGS__))
#define id_sig(T) SignatureM(T, void)
#define true_sig id_sig(true_t)
#define false_sig id_sig(false_t)
#define _0 false_sig
#define _1 true_sig
#define bool_sig_v(S) _Generic((S) (0), true_sig: TRUE, false_sig: FALSE)
#define bool_sig_int(S) _Generic((S) (0), true_sig: 1, false_sig: 0)
#define bool_sig_t(S) typeof(bool_sig_v(S))
#define sig_apply_res_t(X) typeof(((X) (0))())
#define is_same_sig_t(SA, SB) typeof(_Generic((SA) (0), SB: TRUE, default: FALSE))