- 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
/* --- PRINTF_BYTE_TO_BINARY macro's --- */
#define PRINTF_BINARY_PATTERN_INT8 "%c%c%c%c%c%c%c%c"
#define PRINTF_BYTE_TO_BINARY_INT8(i) \
(((i) & 0x80ll) ? '1' : '0'), \
(((i) & 0x40ll) ? '1' : '0'), \
(((i) & 0x20ll) ? '1' : '0'), \
(((i) & 0x10ll) ? '1' : '0'), \
(((i) & 0x08ll) ? '1' : '0'), \
(((i) & 0x04ll) ? '1' : '0'), \
(((i) & 0x02ll) ? '1' : '0'), \
(((i) & 0x01ll) ? '1' : '0')
#define PRINTF_BINARY_PATTERN_INT16 \
PRINTF_BINARY_PATTERN_INT8 PRINTF_BINARY_PATTERN_INT8
#define PRINTF_BYTE_TO_BINARY_INT16(i) \
PRINTF_BYTE_TO_BINARY_INT8((i) >> 8), PRINTF_BYTE_TO_BINARY_INT8(i)
#define PRINTF_BINARY_PATTERN_INT32 \
PRINTF_BINARY_PATTERN_INT16 PRINTF_BINARY_PATTERN_INT16
#define PRINTF_BYTE_TO_BINARY_INT32(i) \
PRINTF_BYTE_TO_BINARY_INT16((i) >> 16), PRINTF_BYTE_TO_BINARY_INT16(i)
#define PRINTF_BINARY_PATTERN_INT64 \
PRINTF_BINARY_PATTERN_INT32 PRINTF_BINARY_PATTERN_INT32
#define PRINTF_BYTE_TO_BINARY_INT64(i) \
PRINTF_BYTE_TO_BINARY_INT32((i) >> 32), PRINTF_BYTE_TO_BINARY_INT32(i)
/* --- end macros --- */
#include <stdio.h>
int main() {
long long int flag = 1648646756487983144ll;
printf("My Flag "
PRINTF_BINARY_PATTERN_INT64 "\n",
PRINTF_BYTE_TO_BINARY_INT64(flag));
return 0;
}
guest8 18.10.2019 18:03 # −999
govnokod3r 18.10.2019 18:19 # +1
guest8 18.10.2019 18:57 # −999
BoeHHblu_nemyx 18.10.2019 19:03 # 0
Louie_Louie 19.10.2019 20:35 # 0
DyKaJluC 19.10.2019 22:14 # 0
Louie_Louie 19.10.2019 23:49 # 0
DyKaJluC 20.10.2019 00:00 # 0
DyKaJluC 20.10.2019 00:01 # 0
MAPTbIwKA 21.10.2019 20:30 # 0
А еще я как-то попытался взять указатель на функцию, а она оказалась макросом
Я тогда здорово перепугалось
DECAHTHblu_nemyx 21.10.2019 21:54 # 0
guest8 21.10.2019 21:56 # −999
guest8 22.10.2019 05:47 # −999
guest8 22.10.2019 14:28 # −999
Xyu_3HAET_KTO 22.10.2019 15:32 # 0
XYPO3BO3 26.11.2019 16:23 # 0
guest8 26.11.2019 17:34 # −999
XYPO3BO3 29.11.2019 16:34 # 0
booratihno 30.11.2019 01:16 # 0
XYPO3BO3 30.11.2019 01:27 # 0
guest8 30.11.2019 01:40 # −999
Antifriz_otrabotanyi 30.11.2019 14:09 # 0
guestinxo 30.11.2019 14:31 # 0
guest8 22.10.2019 06:02 # −999
guest8 22.10.2019 06:10 # −999
Louie_Louie 22.10.2019 11:18 # 0
В гнусях, вроде, трамплин будет только если возвращать указатель на вложенную функцию (вот это уже замыкание). А так, для простых вложенных функций это нахуй не надо, просто органичит область видимости.
guest8 22.10.2019 14:27 # −999
Xyu_3HAET_KTO 22.10.2019 17:42 # 0
Может быть, этот ключ работает только на определённых платформах?
guest8 22.10.2019 17:45 # −999
Louie_Louie 22.10.2019 01:53 # 0
Louie_Louie 22.10.2019 01:55 # 0
guest8 22.10.2019 03:23 # −999
govnokod3r 22.10.2019 04:50 # 0
guest8 22.10.2019 17:28 # −999
Louie_Louie 22.10.2019 11:15 # +1
Вообще-то и в сях инлайн есть, и генерики, но общим будет только имя, реализацию для разных типов придется писать свою.
guest8 22.10.2019 17:29 # −999
Rooster 26.11.2019 15:55 # +1
Я про _Generic.
XYPO3BO3 26.11.2019 16:11 # 0
https://en.cppreference.com/w/c/language/generic
XYPO3BO3 26.11.2019 16:15 # 0
DECAHTHblu_nemyx 22.10.2019 22:56 # 0
ksh 22.10.2019 23:06 # 0
1. typeof на этапе компиляции извлекает из выражения его тип. Что-то типа auto в новых крестах.
2. Фигурные скобки ограничивают блок. Блок может возвращать значение (почти как в скриптовых языках): берётся значение последней операции.
3. Ну и круглые скобки на всякий случай, чтобы показать, что нужно извлечь значение выражения.
За пределами gcc это всё работать не обязано.
DECAHTHblu_nemyx 22.10.2019 23:26 # 0
В каких ещё языках, кроме "R", возвращаемое значение - значение последней операции?
ksh 22.10.2019 23:32 # 0
DECAHTHblu_nemyx 22.10.2019 23:39 # 0
ksh 23.10.2019 00:28 # 0
defecate-plusplus 23.10.2019 00:12 # 0
guestinxo 23.10.2019 00:19 # 0
defecate-plusplus 23.10.2019 00:32 # 0
guestinxo 23.10.2019 00:32 # 0
guestinxo 23.10.2019 00:40 # 0
https://scifanatic-wpengine.netdna-ssl.com/wp-content/uploads/2017/03/facepalm-head.jpg
guest8 23.10.2019 01:01 # −999
6ecxo3Hblu_nemyx 19.05.2020 21:45 # 0
KOPOHABuPYC 19.05.2020 21:54 # 0
guest8 23.10.2019 01:09 # −999
defecate-plusplus 23.10.2019 08:59 # 0
Отлично груви зашёл, рекомендую.
guest8 23.10.2019 09:56 # −999
guest8 23.10.2019 10:30 # −999
guest8 23.10.2019 10:42 # −999
defecate-plusplus 23.10.2019 11:14 # 0
guest8 23.10.2019 15:14 # −999
BoeHHblu_nemyx 11.05.2020 00:54 # 0
АХАХАХАХАХАХ
guest8 11.05.2020 00:53 # −999
guest8 23.10.2019 01:01 # −999
Xyu_3HAET_KTO 22.10.2019 13:31 # +1
https://gcc.godbolt.org/z/Coc9oy
https://ideone.com/tfrPdX
Xyu_3HAET_KTO 22.10.2019 13:42 # 0
Вероятно, нечётное значение указателя в примере с пустыми квадратными скобками означало, что ничего не захвачено.
Кстати, уже с -O1 в обоих примерах всё инлайнится и заменяется на вычисленную в компайлтайме константу.
Louie_Louie 22.10.2019 14:06 # 0
Xyu_3HAET_KTO 22.10.2019 13:55 # 0
Да, при включенной оптимизации, если аргументы являются константами, компилятор лямбду выкинет и заменит на результат. А если аргументы переменные, всегда ли он сможет оптимизировать? Компилятор создаст две совершенно одинаковые реализации лямбды. А если вызов MIN использовать много раз, то будет какой багор.
Steve_Brown 21.10.2019 14:12 # 0