Skip to main content

Hva er betinget sammenstilling?

I dataprogrammering beskriver betinget sammenstilling muligheten til en programvarekompilator eller kildekodeprosessor til å inkludere eller ignorere visse kommandoer eller kodeblokker basert på språkspesifikke instruksjoner som ikke er teknisk en del av kjerneprogrammeringsspesifikasjonen.Kommandoene som brukes til å utløse betinget sammenstilling i et program, kalles ofte pre-prosessoredirektiver, selv om de også kan være kjent som kompilatordirektiver, betingede kommentarer eller betingede definer.Avhengig av kompilatoren eller språket som brukes, kan de betingede direktivene være brukerdefinerte variabler eller makroer, eller de kan også være systemvariabler satt av kompilatoren eller operativsystemet.Betinget sammenstilling brukes ofte til å konfigurere et enkelt sett med kildekodefiler, slik at de kan samles under forskjellige miljøer eller operativsystemer uten å måtte bytte eller endre kildefiler.

Betingede definisjoner som brukes til å teste for betinget sammenstilling kan variere fraEtt språk for et annet, men de er generelt makroer eller andre metadatauttrykk utenfor omfanget av de normale programvariablene.På språk som C er variablene vanligvis makroer som blir lest av en pre-prosessor.Det meste av tiden er makroene ikke tilgjengelige etter faktiske kjørbare programkildekoder, selv om de eksisterer i de samme kildefilene.

Direktivene som brukes til å teste de definerte betingede variablene er rudimentære og følger den samme logikken som en IF-Tåklæring.De grunnleggende testene som kan utføres for betinget sammenstilling er om en verdi er definert, ikke definert eller i noen tilfeller om to definerte variabler er likeverdige.Variablene eller makroene selv har generelt ingen verdi av betydning, fordi handlingen med å definere dem er det direktivene sjekker etter.Med noen språk og kompilatorer kan imidlertid verdien av en definert variabel gjøre noe om de blir evaluert for den boolske tilstanden.

Når en kompilator møter direktiver som brukes til betinget sammenstilling, blir direktivene evaluert for å se om de tester som sanne eller falske.Hvis det er sant, blir koden som følger direktivet samlet som normalt;Ellers vil kompilatoren hoppe over koden som er inneholdt under direktivet.Dette er i motsetning til betingede logiske utsagn innenfor selve den kjørbare programkoden, selv om logikken har en kodeblokk som ikke kan utføres, vil den fremdeles bli tolket og samlet i de fleste tilfeller.Med betingede pre-prosessoredirektiver blir hoppet over kode aldri inkludert, tolket eller samlet.Det skal også bemerkes at når forbehandleren har evaluert alle betingede variabler og direktiver, er de ikke samlet med resten av programmet, fordi de bare er ment å gi retning til kompilatoren.

betinget sammenstilling oftest erBrukes til å inkludere eller ekskludere kode som er spesifikk for et bestemt operativsystem eller miljø.Dette betyr at biblioteker som finnes i ett operativsystem kan være betinget inkludert hvis direktivene bestemmer at programmet blir samlet under det operativsystemet.Alternativt kan direktivene også brukes til å inkludere eller ekskludere kode basert på brukerdefinerte variabler.Dette kan gjøres slik at feilsøking eller profileringskode ikke er inkludert i den endelige versjonen av et program, eller så visse funksjoner kan aktiveres eller deaktiveres uten å måtte opprettholde separate kopier av koden.