Šajā apmācībā jūs iepazīstinās ar c priekšapstrādātājiem, un jūs ar piemēriem iemācīsieties izmantot #include, #define un nosacītu kompilāciju.
C priekšapstrādes procesors ir makro priekšapstrādes process (ļauj definēt makro), kas pārveido programmu pirms tās sastādīšanas. Šīs transformācijas var būt galvenes faila iekļaušana, makro paplašinājumi utt.
Visas priekšapstrādes direktīvas sākas ar #
simbolu. Piemēram,
#define PI 3.14
Daži no C priekšapstrādes procesora izplatītākajiem lietojumiem ir:
Ieskaitot galvenes failus: #include
#include
Preprocessor tiek izmantots, lai iekļautu header failus C programmas. Piemēram,
#include
Šeit stdio.h
ir galvenes fails. #include
Apstrādātāju direktīva aizstāj iepriekš minēto līniju ar saturu stdio.h
header failu.
Tas ir iemesls, kāpēc jums jāizmanto, #include
pirms varat izmantot tādas funkcijas kā scanf()
un printf()
.
Varat arī izveidot pats savu galvenes failu ar funkciju deklarāciju un iekļaut to savā programmā, izmantojot šo priekšapstrādātāja direktīvu.
#include "my_header.h"
Apmeklējiet šo lapu, lai uzzinātu vairāk par galvenes failu izmantošanu.
Makro, izmantojot #define
Makro ir koda fragments, kuram tiek piešķirts nosaukums. Izmantojot #define
priekšprocesora direktīvu , C var definēt makro .
Lūk, piemērs.
#define c 299792458 // speed of light
Šeit, kad mēs savā programmā izmantojam c, tas tiek aizstāts ar 299792458
.
1. piemērs: #define preprocessor
#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; )
Funkcija kā makro
Varat arī definēt makro, kas darbojas līdzīgi kā funkciju izsaukums. Tas ir pazīstams kā funkcijai līdzīgi makro. Piemēram,
#define circleArea(r) (3.1415*(r)*(r))
Katru reizi, kad programma sastopas circleArea(argument)
, tā tiek aizstāta ar (3.1415*(argument)*(argument))
.
Pieņemsim, ka tad mēs izturējām 5 kā argumentu, un tas tiek paplašināts šādi:
circleArea(5) expands to (3.1415*5*5)
2. piemērs: #define preprocessor izmantošana
#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; )
Apmeklējiet šo lapu, lai uzzinātu vairāk par makro un #define preprocessor.
Nosacīta kompilācija
Programmējot C, jūs varat norādīt priekšapstrādātājam, vai iekļaut koda bloku. Lai to izdarītu, var izmantot nosacītās direktīvas.
Tas ir līdzīgs if
paziņojumam ar vienu būtisku atšķirību.
if
Apgalvojums tiek pārbaudīta laikā izpildes laiku, lai pārbaudītu, vai bloka kods ir izpildīts vai ne tā, kā conditionals tiek izmantoti, lai iekļautu (vai izlaist) bloku kodu savā programmā pirms to izpildes.
Nosacījuma izmantošana
- izmantojiet atšķirīgu kodu atkarībā no iekārtas, operētājsistēmas
- apkopot to pašu avota failu divās dažādās programmās
- izslēgt noteiktu kodu no programmas, bet saglabāt to kā atsauci turpmākajiem mērķiem
Kā lietot nosacīto?
Lai izmantotu nosacījumu, #ifdef
, #if
, #defined
, #else
un #elseif
direktīvas tiek izmantoti.
#ifdef direktīva
#ifdef MACRO // conditional codes #endif
Šeit nosacītie kodi tiek iekļauti programmā tikai tad, ja ir definēts MACRO.
#if, #elif un #else direktīva
#if expression // conditional codes #endif
Šeit izteiksme ir vesela skaitļa veida izteiksme (var būt veseli skaitļi, rakstzīmes, aritmētiskā izteiksme, makro un tā tālāk).
Nosacītie kodi tiek iekļauti programmā tikai tad, ja izteiksme tiek vērtēta ar vērtību, kas nav nulle.
Izvēles #else
direktīvu var izmantot kopā ar #if
direktīvu.
#if expression conditional codes if expression is non-zero #else conditional if expression is 0 #endif
Varat arī pievienot ligzdotu nosacījumu savai #if… #else
lietošanai#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
#defined
Īpašais operators #defined tiek izmantots, lai pārbaudītu, vai noteikts makro ir definēts. To bieži lieto kopā ar direktīvu #if.
#if defined BUFFER_SIZE && BUFFER_SIZE>= 2048 // codes
Iepriekš definēti makro
Šeit ir daži iepriekš definēti makro C programmēšanā.
Makro | Vērtība |
---|---|
__DATE__ | Virkne ar pašreizējo datumu |
__FILE__ | Virkne, kas satur faila nosaukumu |
__LINE__ | Vesels skaitlis, kas apzīmē pašreizējo rindas numuru |
__STDC__ | Ja tiek ievērots ANSI standarts C, vērtība ir vesels skaitlis, kas nav nulle |
__TIME__ | Virkne ar pašreizējo datumu. |
3. piemērs: iegūstiet pašreizējo laiku, izmantojot __TIME__
Tālāk norādītā programma izvada pašreizējo laiku, izmantojot __TIME__
makro.
#include int main() ( printf("Current time: %s",__TIME__); )
Rezultāts
Pašreizējais laiks: 19:54:39
Ieteicamie lasījumi
- Līnijas vadība
- Pragmas
- Pirmsprocesora izeja
- Citas direktīvas