C++ Academy
Фотография
нажмите — покажем
нажмите — покажем
⚡️ В Linux даже обычный syscall начинается с макроса.
Например:
SYSCALL_DEFINE3(write, unsigned int, fd, const char __user *, buf, size_t, count)
После препроцессора это превращается сразу в несколько функций:
- sys_write
- __se_sys_write
- __do_sys_write
Одна строка описывает системный вызов, а C-препроцессор через макросы и token pasting собирает остальную обвязку автоматически.
Именно поэтому код ядра Linux часто выглядит коротко, пока не начнёшь разворачивать макросы.
12 · 2.4K ·