#define
: Определяет макрос.- Макрос-константа: Простая текстовая подстановка.
#define BUFFER_SIZE 1024 // ... char buffer[BUFFER_SIZE]; // Заменится на char buffer[1024];
- Макрос-функция: Подстановка с параметрами. Важно использовать скобки!
#define SQUARE(x) ((x)*(x)) // Правильно #define BAD_SQUARE(x) x*x // Неправильно (проблемы с приоритетом) // ... int result = SQUARE(a + b); // Заменится на int result = ((a + b)*(a + b));
- Преобразование в строку (
#
): Оператор#
перед параметром макроса-функции преобразует аргумент в строковый литерал.#define PRINT_VAR(var) printf(#var " = %d\n", var) // ... int count = 10; PRINT_VAR(count); // Превратится в printf("count" " = %d\n", count); // Выведет: count = 10
- Конкатенация токенов (
##
): Оператор##
“склеивает” два токена во время препроцессирования.
- Преобразование в строку (
- Макрос-константа: Простая текстовая подстановка.
#undef
: Отменяет определение макроса.#undef BUFFER_SIZE
#include
: Вставляет содержимое указанного файла в текущий файл.#include <filename.h>
: Поиск файла в стандартных системных каталогах.#include "filename.h"
: Поиск файла сначала в текущем каталоге, затем в стандартных.
- Директивы условной компиляции: Позволяют включать или исключать части кода из компиляции в зависимости от условий.
#if выражение
: Если целочисленноевыражение
не равно 0.#ifdef МАКРОС
: ЕслиМАКРОС
был определен через#define
.#ifndef МАКРОС
: ЕслиМАКРОС
не был определен.#else
: Альтернативный блок для#if
,#ifdef
,#ifndef
.#elif выражение
:else if
для препроцессора.#elifdef МАКРОС
:else ifdef
.#elifndef МАКРОС
:else ifndef
.#endif
: Завершает блок условной компиляции (#if
,#ifdef
,#ifndef
).
#define DEBUG_MODE 1 #ifdef DEBUG_MODE printf("Debug message\n"); #else printf("Release message\n"); #endif
〰〰〰 𓆝 𓆟 𓆞 𓆝 𓆟 𓆝 𓆟 𓆞 〰〰〰