- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
#include <stdlib.h>
#include <stdio.h>
#include <inttypes.h>
#define STRING 0
#define INTEGER 1
#define CAT(x,y) x ## _ ## y
#define J(x,y) CAT(x,y)
typedef union
{
char *J(v, STRING);
int J(v,INTEGER);
} Un;
typedef struct
{
uint8_t Obj_t;
Un u;
} Object;
#define IF_INSTOF(var, t, newvar) \
if(var.Obj_t == t) \
{ \
typeof(var.u.J(v,t)) *newvar = &var.u.J(v,t);
int main(void)
{
Object obj1 = {STRING, {.J(v,STRING) = "1"}};
IF_INSTOF(obj1,STRING,str)
printf("String: %s\n", *str);
}
else
{
printf("Not a string\n");
}
Object obj2 = {INTEGER, {.J(v,INTEGER) = 1}};
IF_INSTOF(obj2,INTEGER,i)
printf("Integer: %d\n", *i);
}
else
{
printf("Not an Integer\n");
}
return EXIT_SUCCESS;
}
Вот такие смарткасты через препроцессор.
https://govnokod.ru/27556#comment655527
j123123 13.08.2021 20:17 # +1
3.14159265 14.08.2021 02:19 # 0
Причём благодаря __builtin_choose_expr часть ветвлений могут быть перенесны в compile-time.
https://github.com/exebook/generic-print
https://habr.com/en/post/544038/
j123123 14.08.2021 04:02 # +1
Пример использования _Generic :
https://wandbox.org/permlink/EH5I1XUQrtisSEnR
Но вообще, хуйня всё это. Надо чтоб работа с AST, гомоиконность!
j123123 13.08.2021 20:36 # 0
Улучшил
j123123 24.08.2021 10:45 # 0
j123123 24.08.2021 11:48 # 0
ASD_77 13.08.2021 20:50 # +3
3.14159265 14.08.2021 02:14 # +2
1024-- 14.08.2021 12:39 # 0
Свой C со смайликами и кошкодевочками.
GovnokodGovno 15.08.2021 00:28 # 0
Chupacabramiamor 15.08.2021 00:32 # 0
ru66oH4uk 15.08.2021 01:26 # 0
COPOKA 15.08.2021 13:20 # +1
COPOKA 15.08.2021 14:13 # +1
guest6 15.08.2021 01:29 # +1
3.14159265 15.08.2021 01:46 # +2
> GNU Compiler Collection 10.2
> Clang 11
Тьфу старьё. Но я всё-равно всегда собираю компилер руками...
>Linux kernel 5.10 series
> mesa (20.3.5-1)
В целом жить можно, если железо новое не покупать.
ASD_77 15.08.2021 01:54 # 0
guest6 15.08.2021 02:45 # +1
Вот и с этим релизом не стало троих человек...
https://www.debian.org/News/2021/20210812
guest6 15.08.2021 03:19 # +1
JloJle4Ka 15.08.2021 06:30 # 0
j123123 15.08.2021 06:34 # +1
#Порфирьевич
guest6 15.08.2021 13:16 # +1
j123123 15.08.2021 15:33 # 0
3.14159265 15.08.2021 04:08 # +1
А ты openSUSE не пробовал?
JloJle4Ka 15.08.2021 06:30 # 0
bormand 15.08.2021 09:25 # 0
JloJle4Ka 15.08.2021 10:00 # +3
Hacpy 15.08.2021 10:14 # +2
guest6 15.08.2021 11:12 # 0
JloJle4Ka 15.08.2021 14:09 # 0
guest6 16.08.2021 09:22 # +2
Красноглазый прыщемир.
JloJle4Ka 16.08.2021 09:49 # 0