#cpp
Day 41.
Кроме хорошо знакомого вам
Подразумевалось, что
после чего вы могли писать
То есть с помощью
Ещё утверждения можно было отменять с помощью
И больше это неправда.
Фактически это примитивная логическая база знаний.
Выше я писал «был», потому что в C11 #assert и #unassert не стало. Потому что фактически почти никто не реализовал. Все писали примерно:
@thisnotes. Patreon, Boosty.
Спасибо Artyom Garkavy и niki4smirn.
Day 41.
Кроме хорошо знакомого вам
assert был и ещё никак не связанный с первым #assert. Подразумевалось, что
#assert будет помогать генерировать какие-то утверждения для препроцессора. Например
#assert cpu(x86)
#assert os(linux)
#assert this(notes)
после чего вы могли писать
#if #cpu(x86) // true
...
#if #os(linux) // true
...
#if #this(notes) // true
...
#if #os(win) // false
...
То есть с помощью
#assert препроцессор записывал в отдельную табличку верные утверждения, а потом умел сообщать, есть ли такой факт. Причём проверка проводилась для predicate(argument). Ещё утверждения можно было отменять с помощью
#unassert cpu(x86)
И больше это неправда.
Фактически это примитивная логическая база знаний.
Выше я писал «был», потому что в C11 #assert и #unassert не стало. Потому что фактически почти никто не реализовал. Все писали примерно:
#define CPU_X86 1
#if CPU_X86
#ifdef CPU_X86
@thisnotes. Patreon, Boosty.
Спасибо Artyom Garkavy и niki4smirn.
❤9🔥1
#cpp
Привет.
Сегодня последний day 52 марафона.
Я знаю, что кому-то он поднадоел. Не зря от меня отписалось больше полусотни человек.
Мне тоже надоело, если честно.
Если вдруг вы не узнали/не знали, марафон был основан на C++ Preprocessor Iceberg. Я в целом шёл от начала почти по каждому пункту, скипая что-то, что выглядит совсем мутным и невнятным, что я не смог заставить работать или не смог осознать. Попутно старался дополнять своим ресёрчем. Постов фактически вышло на пару десятков меньше, чем пунктов в оригинальном источнике. Мы примерно на половину задели Deep water и совсем не задели The abyss. К концу я уже высох от темы и решил, что душить себя не очень полезно. Лучше чем-то в радость позаниматься. Так что заинтересованные могут доисследовать самый низ айсберга.
Расскажите в комментах, как вам. Надо такое делать вообще ещё когда-нибудь? На какие темы? Или нахер и лучше ограничиться обычными форматами?
Не факт конечно, что я ваше мнение учту, но мне хочется его знать.
Если не хотите писать открытым текстом, то вот варианты quite feedback:
🔥 — круто, можно повторять
🥴 — круто, можно повторять, но слишком долго
🤯 — круто, лучше не повторять
🌚 — не круто, лучше не повторять.
Ниже собрал ссылочки для удобства. Пересылайте друзьям, мамам и папам. Пользуйтесь в будущем сами.
Above the iceberg:
• #include
• include guards
• #pragma once
• #if
• заворачивание в скобки
• do-while
• ARRAY_SIZE и sizeof
On the iceberg:
• stringification operator
• token concatenation operator
• __VA_ARGS__
• #undef
• #error
• comments concatenation
• X-macro
Below the water:
• FILE and LINE
• DATE and TIME
• #line
• триграфы и иже с ними
• _Pragma
• -E
Middle of the iceberg:
• COUNTER
• CONCAT
• #elifdef #elifndef
• #embed
• SCAN
• лимит на макросы
• mcpp
• перегрузка макросов
• default args в макросах
Bottom of the iceberg:
• blue paint
• BOOL, IF
• INC/DEC
• LOOP
• Boost.Preprocessor
Below the iceberg:
• LIST
• ORDER_PP
• #assert
• #include_next
• ppstep
• how macro expansion works
• sequence
Deep water:
• итерация по sequence
• chaos-pp
• Metalang99
• не знаю точно что это
• push/pop макросов
• ещё несколько ссылочек
Привет.
Сегодня последний day 52 марафона.
Я знаю, что кому-то он поднадоел. Не зря от меня отписалось больше полусотни человек.
Мне тоже надоело, если честно.
Если вдруг вы не узнали/не знали, марафон был основан на C++ Preprocessor Iceberg. Я в целом шёл от начала почти по каждому пункту, скипая что-то, что выглядит совсем мутным и невнятным, что я не смог заставить работать или не смог осознать. Попутно старался дополнять своим ресёрчем. Постов фактически вышло на пару десятков меньше, чем пунктов в оригинальном источнике. Мы примерно на половину задели Deep water и совсем не задели The abyss. К концу я уже высох от темы и решил, что душить себя не очень полезно. Лучше чем-то в радость позаниматься. Так что заинтересованные могут доисследовать самый низ айсберга.
Расскажите в комментах, как вам. Надо такое делать вообще ещё когда-нибудь? На какие темы? Или нахер и лучше ограничиться обычными форматами?
Не факт конечно, что я ваше мнение учту, но мне хочется его знать.
Если не хотите писать открытым текстом, то вот варианты quite feedback:
🔥 — круто, можно повторять
🥴 — круто, можно повторять, но слишком долго
🤯 — круто, лучше не повторять
🌚 — не круто, лучше не повторять.
Ниже собрал ссылочки для удобства. Пересылайте друзьям, мамам и папам. Пользуйтесь в будущем сами.
Above the iceberg:
• #include
• include guards
• #pragma once
• #if
• заворачивание в скобки
• do-while
• ARRAY_SIZE и sizeof
On the iceberg:
• stringification operator
• token concatenation operator
• __VA_ARGS__
• #undef
• #error
• comments concatenation
• X-macro
Below the water:
• FILE and LINE
• DATE and TIME
• #line
• триграфы и иже с ними
• _Pragma
• -E
Middle of the iceberg:
• COUNTER
• CONCAT
• #elifdef #elifndef
• #embed
• SCAN
• лимит на макросы
• mcpp
• перегрузка макросов
• default args в макросах
Bottom of the iceberg:
• blue paint
• BOOL, IF
• INC/DEC
• LOOP
• Boost.Preprocessor
Below the iceberg:
• LIST
• ORDER_PP
• #assert
• #include_next
• ppstep
• how macro expansion works
• sequence
Deep water:
• итерация по sequence
• chaos-pp
• Metalang99
• не знаю точно что это
• push/pop макросов
• ещё несколько ссылочек
jadlevesque.github.io
The Preprocessor Iceberg Meme
50🔥106🥴66🤯24🌚8❤1