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
#include
Preprocesoru se používá pro zahrnutí hlavičkové soubory C programy. Například,
#include
Tady stdio.h
je soubor záhlaví. #include
Směrnice preprocesor nahradí výše uvedený řádek s obsahem stdio.h
souboru 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í #define
direktivy 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 if
prohlášení s jedním zásadním rozdílem.
Příkaz if
je 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
, #else
a #elseif
jsou 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 #else
směrnici lze použít se #if
směrnicí.
#if expression conditional codes if expression is non-zero #else conditional if expression is 0 #endif
K vašemu #if… #else
použ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