Day 22.
Мы с вами уже говорили про
#pragma once. Но прагмы бывают разные. Это фактически implementation defined способ сообщить компилятору, что надо сделать. Но коммуницировать бывает сложно.
Особенно если я пытаюсь генерировать прагму макросами:
#define DISABLE_WARNINGS #pragma GCC diagnostic ignored "-Wall"
Такой синтаксис ломается из-за второго диеза (
#). Поэтому есть альтернатива:
_Pragma():
#define DISABLE_WARNINGs _Pragma("GCC diagnostic ignored \"-Wall\"")
#define DO_PRAGMA(x) _Pragma(#x)
DO_PRAGMA(GCC diagnostic ignored "-Wunused-variable")
Последнее как раз эквивалентно:
#pragma GCC diagnostic ignored "-Wunused-variable"
Аргумент — обязательно строковый литерал.
Прагмамируйте на здоровье (смешно?).
@thisnotes. Patreon, Boosty.
Спасибо Artyom Garkavy и niki4smirn.