Skip to main content

Hvad er betinget samling?

I computerprogrammering beskriver betinget kompilering muligheden for en softwarekompilator eller kildekodeprocessor til at inkludere eller ignorere visse kommandoer eller blokke af kode baseret på sprogspecifikke instruktioner, der ikke er teknisk en del af kernesprogrammeringssprogsspecifikationen.De kommandoer, der bruges til at udløse betinget kompilering i et program, kaldes ofte pre-processor-direktiver, selvom de også kan kendes som kompilatordirektiver, betingede kommentarer eller betingede definitioner.Afhængig af kompilatoren eller sproget, der bruges, kan de betingede direktiver være brugerdefinerede variabler eller makroer, eller de kan også være systemvariabler, der er indstillet af kompilatoren eller operativsystemet.Betinget kompilering bruges ofte til at konfigurere et enkelt sæt kildekodefiler, så de kan samles under forskellige miljøer eller operativsystemer uden at skulle bytte eller ændre kildefiler.

De betingede definerer, der bruges til at teste til betinget kompilering, kan variere fraEt sprog til et andet, men de er generelt makroer eller andre metadata-udtryk uden for omfanget af de normale programvariabler.På sprog som C er variablerne normalt makroer, der læses af en for-processor.Det meste af tiden er makroerne ikke tilgængelige med den faktiske eksekverbare programkildekode, selvom de findes i de samme kildefiler.

De direktiver, der bruges til at teste de definerede betingede variabler, er rudimentære og følger den samme logik som en hvis-Det erklæring.De grundlæggende tests, der kan udføres til betinget kompilering, er, om en værdi er defineret, ikke defineret eller i nogle tilfælde, om to definerede variabler er ækvivalente.Variablerne eller makroerne selv har generelt ikke nogen værdi af betydning, fordi handlingen med at definere dem er, hvad direktiverne kontrollerer.Med nogle sprog og kompilatorer kan værdien af en defineret variabel dog være noget, hvis de evalueres for den boolske tilstand.

Når en kompilator møder direktiver, der bruges til betinget kompilering, evalueres direktiverne for at se, om de tester som sande eller falske.Hvis det er sandt, er koden, der følger direktivet, samlet som normalt;Ellers springer kompilatoren helt over koden, der er indeholdt i direktivet.Dette er i modsætning til betingede logiske udsagn inden for selve den eksekverbare programkode, fordi selv hvis logikken har en blok af kode, der ikke kan udføres, vil den stadig blive fortolket og samlet i de fleste tilfælde.Med betingede pre-processor-direktiver er overskydende kode aldrig inkluderet, fortolket eller udarbejdet.Det skal også bemærkes, at når processoren først har evalueret alle de betingede variabler og direktiver, er de ikke samlet med resten af programmet, fordi de kun er beregnet til at give retning til kompilatoren.

Betinget kompilering oftestBruges til at inkludere eller ekskludere kode, der er specifik for et bestemt operativsystem eller miljø.Dette betyder, at biblioteker, der findes i et operativsystem, kan være betinget, hvis direktiverne bestemmer, at programmet udarbejdes under dette operativsystem.Alternativt kan direktiverne også bruges til at inkludere eller ekskludere kode baseret på brugerdefinerede variabler.Dette kan gøres, så fejlfinding eller profileringskode er ikke inkluderet i den endelige version af et program, eller så visse funktioner kan aktiveres eller deaktiveres uden at skulle opretholde separate kopier af koden.