V tomto kurzu se seznámíte s preprocesory c a pomocí příkladů se naučíte používat #include, #define a podmíněnou kompilaci.

Preprocesor C je preprocesor maker (umožňuje definovat makra), který transformuje váš program před jeho kompilací. Těmito transformacemi může být zahrnutí hlavičkového souboru, rozšíření maker atd.
Všechny směrnice pro předzpracování začínají #symbolem. Například,
#define PI 3.14
Některá běžná použití preprocesoru C jsou:
Včetně souborů záhlaví: # zahrnout
#includePreprocesoru se používá pro zahrnutí hlavičkové soubory C programy. Například,
#include
Tady stdio.hje soubor záhlaví. #includeSměrnice preprocesor nahradí výše uvedený řádek s obsahem stdio.hsouboru záhlaví.
To je důvod, proč musíte použít, #include než budete moci používat funkce jako scanf()a printf().
Můžete také vytvořit svůj vlastní soubor záhlaví obsahující deklaraci funkce a zahrnout jej do svého programu pomocí této direktivy preprocesoru.
#include "my_header.h"
Na této stránce najdete další informace o používání hlavičkových souborů.
Makra používající #define
Makro je fragment kódu, který dostal jméno. Makro v C můžete definovat pomocí #definedirektivy preprocesoru.
Zde je příklad.
#define c 299792458 // speed of light
Tady, když v našem programu použijeme c, je nahrazeno 299792458.
Příklad 1: #define preprocesor
#include #define PI 3.1415 int main() ( float radius, area; printf("Enter the radius: "); scanf("%f", &radius); // Notice, the use of PI area = PI*radius*radius; printf("Area=%.2f",area); return 0; )
Fungují jako makra
Můžete také definovat makra, která fungují podobným způsobem jako volání funkce. Toto se nazývá makra podobná funkcím. Například,
#define circleArea(r) (3.1415*(r)*(r))
Pokaždé, když se program setká circleArea(argument), je nahrazen (3.1415*(argument)*(argument)).
Předpokládejme, že jsme předali 5 jako argument, poté se rozšíří níže:
circleArea(5) expands to (3.1415*5*5)
Příklad 2: Použití preprocesoru #define
#include #define PI 3.1415 #define circleArea(r) (PI*r*r) int main() ( float radius, area; printf("Enter the radius: "); scanf("%f", &radius); area = circleArea(radius); printf("Area = %.2f", area); return 0; )
Na této stránce najdete další informace o makrech a preprocesoru #define.
Podmíněná kompilace
V programování C můžete instruovat preprocesor, zda má obsahovat blok kódu nebo ne. K tomu lze použít podmíněné směrnice.
Je to podobné jako ifprohlášení s jedním zásadním rozdílem.
Příkaz ifje testován během doby provádění, aby se zkontrolovalo, zda by měl být spuštěn blok kódu, nebo ne, zatímco podmínky se používají k zahrnutí (nebo přeskočení) bloku kódu do vašeho programu před provedením.
Použití podmíněného
- použijte jiný kód v závislosti na stroji a operačním systému
- zkompilovat stejný zdrojový soubor do dvou různých programů
- vyloučit určitý kód z programu, ale ponechat si jej jako referenci pro budoucí účely
Jak používat podmíněný?
Chcete-li použít podmíněný, #ifdef, #if, #defined, #elsea #elseifjsou použity direktivy.
#ifdef směrnice
#ifdef MACRO // conditional codes #endif
Zde jsou podmíněné kódy zahrnuty do programu, pouze pokud je definováno MACRO.
Směrnice #if, #elif a #else
#if expression // conditional codes #endif
Zde je výraz výrazem celočíselného typu (mohou to být celá čísla, znaky, aritmetický výraz, makra atd.).
Podmíněné kódy jsou do programu zahrnuty, pouze pokud je výraz vyhodnocen na nenulovou hodnotu.
Volitelnou #elsesměrnici lze použít se #ifsměrnicí.
#if expression conditional codes if expression is non-zero #else conditional if expression is 0 #endif
K vašemu #if… #elsepoužití můžete také přidat vnořené podmíněné#elif
#if expression // conditional codes if expression is non-zero #elif expression1 // conditional codes if expression is non-zero #elif expression2 // conditional codes if expression is non-zero #else // conditional if all expressions are 0 #endif
#definována
Speciální operátor #defined se používá k testování, zda je určité makro definováno nebo ne. Často se používá s direktivou #if.
#if defined BUFFER_SIZE && BUFFER_SIZE>= 2048 // codes
Předdefinovaná makra
Zde je několik předdefinovaných maker v programování v jazyce C.
| Makro | Hodnota |
|---|---|
__DATE__ | Řetězec obsahující aktuální datum |
__FILE__ | Řetězec obsahující název souboru |
__LINE__ | Celé číslo představující číslo aktuálního řádku |
__STDC__ | Pokud následuje standard ANSI C, pak je hodnota nenulové celé číslo |
__TIME__ | Řetězec obsahující aktuální datum. |
Příklad 3: Získejte aktuální čas pomocí __TIME__
Následující program vygeneruje aktuální čas pomocí __TIME__makra.
#include int main() ( printf("Current time: %s",__TIME__); )
Výstup
Aktuální čas: 19:54:39
Doporučené četby
- Ovládání linky
- Pragmas
- Výstup předprocesoru
- Další směrnice








