C programozási nyelv



Hasonló dokumentumok
Dr. Schuster György október 14.

C programozás. 1 óra Bevezetés

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás

Programozás C és C++ -ban

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

C++ programok fordítása

15. Programok fordítása és végrehajtása

Programozás II. 2. Dr. Iványi Péter

C programozási nyelv. Dr. Schuster György szeptember 18.

Programozás 6. Dr. Iványi Péter

12. gyakorlat Enum; Tárolási osztályok Preprocesszor utasítások; Moduláris programozás

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

Szkriptnyelvek. 1. UNIX shell

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

GPU Lab. 5. fejezet. A C++ fordítási modellje. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Bevezetés a programozásba Előadás: Fordítási egység

Programozás I. 5. Előadás: Függvények

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

Forráskód formázási szabályok

BASH script programozás II. Vezérlési szerkezetek

Fordítóprogramok. Aszalós László szeptember 7.

A C programozási nyelv I. Bevezetés

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Bevezetés a programozásba I.

A C programozási nyelv II. Utasítások. A függvény.

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Bevezetés a Programozásba II 4. előadás. Adattípusok hordozhatósága

Függvény pointer. Feladat: Egy tömbben soroljunk fel függvényeket, és hívjuk meg valahányszor.

Pénzügyi algoritmusok

Programzás I gyakorlat

A C programozási nyelv I. Bevezetés

Vezérlési szerkezetek

1. Jelölje meg az összes igaz állítást a következők közül!

Cekla. Készítette Doxygen Tue Sep :13:44

1. Alapok. #!/bin/bash

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Alprogramok, paraméterátadás

Programozási nyelvek (ADA)

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Gregorics Tibor Tanácsok modularizált programok készítéséhez 1

Máté: Assembly programozás

Komputeralgebra Rendszerek

Óbudai Egyetem. C programozási nyelv

5. Gyakorlat. struct diak {

C++ Gyakorlat jegyzet 7. óra

Occam 1. Készítette: Szabó Éva

Programozás 1. Dr. Iványi Péter

2017/01/27 08:59 1/6 Gettext Rendszer

C programozási nyelv

Algoritmizálás és adatmodellezés tanítása 1. előadás

Bevezetés a programozásba Előadás: A const

AWK programozás, minták, vezérlési szerkezetek

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

B I T M A N B I v: T M A N

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

El feldolgozó. Programozás I. Hatwágner F. Miklós október 16. Széchenyi István Egyetem, Gy r

Programozás alapjai 9.Gy: Struktúra 2.

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

A programozás alapjai 1 Rekurzió

Programozás C++ -ban 2007/1

AWK programozás, minták, vezérlési szerkezetek

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Programozás I. gyakorlat

Óbudai Egyetem. C programozási nyelv

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere

Kiszolgálók üzemeltetése. Iványi Péter

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Flex tutorial. Dévai Gergely

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

Máté: Assembly programozás

Java II. I A Java programozási nyelv alapelemei

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények. Dr. Bécsi Tamás 6. Előadás

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

Programozás C++ -ban

Bevezetés a programozásba. 6. Előadás: C++ bevezető

Mérnöki programozás 7. Szerkesztette: dr. Vass Péter Tamás

Programozás C++ -ban

Algoritmizálás + kódolás C++ nyelven és Pascalban

Informatika terméktervezőknek

A C# programozási nyelv alapjai

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

Programozás I gyakorlat. 10. Stringek, mutatók

Az AVR programozás alapjai. Előadja: Both Tamás

Fordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

1. Egyszerű (primitív) típusok. 2. Referencia típusok

Preprocesszor. Programozás alapjai C nyelv 11. gyakorlat. Makrók (2) Makrók (#define) Makrók (3) #include

Programozás alapjai C nyelv 11. gyakorlat. Preprocesszor. Makrók (#define)

Bevezetés a C++ programozási nyelvbe

Bevezetés a programozásba I.

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás

Programozás alapjai 2.Gy: A C nyelv alapjai P R O

Haladó DBMS ismeretek 1

A programozás alapjai

Átírás:

C programozási nyelv Előfeldolgozó utasítások Dr Schuster György 2011 május 3 Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 1 / 15

A fordítás menete Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 2 / 15

A fordítás menete progc Előfeldolgozó Átmenti állomány Fordító progobj más obj-tek könyvtárak indító kód Linker futtatható kód Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 2 / 15

Az fordítás elemei Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 3 / 15

Az fordítás elemei előfeldolgozó (precompiler) kiszedi a fordítás számára felesleges elemeneket a forrás állományból és végrehajtja az előfeldolgozó utasításokat Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 3 / 15

Az fordítás elemei előfeldolgozó (precompiler) kiszedi a fordítás számára felesleges elemeneket a forrás állományból és végrehajtja az előfeldolgozó utasításokat fordító (compiler) az átmeneti állományból relokálható bináris állományt az un object kódot állitja elő Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 3 / 15

Az fordítás elemei előfeldolgozó (precompiler) kiszedi a fordítás számára felesleges elemeneket a forrás állományból és végrehajtja az előfeldolgozó utasításokat fordító (compiler) az átmeneti állományból relokálható bináris állományt az un object kódot állitja elő linker összeszerkeszti az object állományokat, a használt könyvtárakat és az un indítókódot Ezzel futtatható állományt hoz létre Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 3 / 15

Az előfeldolgozó utasítások Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 4 / 15

Az előfeldolgozó utasítások minden előfeldolgozó utasítás a # karakterrel kezdődik, Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 4 / 15

Az előfeldolgozó utasítások minden előfeldolgozó utasítás a # karakterrel kezdődik, az előfeldolgozó utasításokat nem zárja le ;, Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 4 / 15

Az előfeldolgozó utasítások minden előfeldolgozó utasítás a # karakterrel kezdődik, az előfeldolgozó utasításokat nem zárja le ;, az argumentumukat nem tesszük zárójelbe (néhány esetben meg lehet tenni) Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 4 / 15

#include utasítás Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 5 / 15

#include utasítás Az argumentumában megadott fájlt az adott helyen végigolvassa Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 5 / 15

#include utasítás Az argumentumában megadott fájlt az adott helyen végigolvassa Úgy tekinti az include fájlban lévő sorokat, mintha az a program része lenne Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 5 / 15

#include utasítás Az argumentumában megadott fájlt az adott helyen végigolvassa Úgy tekinti az include fájlban lévő sorokat, mintha az a program része lenne Az include fájl lehet gyári: Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 5 / 15

#include utasítás Az argumentumában megadott fájlt az adott helyen végigolvassa Úgy tekinti az include fájlban lévő sorokat, mintha az a program része lenne Az include fájl lehet gyári: #include <stdioh> Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 5 / 15

#include utasítás Az argumentumában megadott fájlt az adott helyen végigolvassa Úgy tekinti az include fájlban lévő sorokat, mintha az a program része lenne Az include fájl lehet gyári: és lehet általunk előállított: #include <stdioh> Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 5 / 15

#include utasítás Az argumentumában megadott fájlt az adott helyen végigolvassa Úgy tekinti az include fájlban lévő sorokat, mintha az a program része lenne Az include fájl lehet gyári: és lehet általunk előállított: #include <stdioh> #include "enyemh" Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 5 / 15

#include utasítás Az argumentumában megadott fájlt az adott helyen végigolvassa Úgy tekinti az include fájlban lévő sorokat, mintha az a program része lenne Az include fájl lehet gyári: és lehet általunk előállított: #include <stdioh> #include "enyemh" Van olyan rendszer, amely különbséget tesz a jelölés szerint Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 5 / 15

Mi legyen és mi ne legyen az include fájlban Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 6 / 15

Mi legyen és mi ne legyen az include fájlban Mi legyen benne: Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 6 / 15

Mi legyen és mi ne legyen az include fájlban Mi legyen benne: függvény deklaráció (türelem sorra kerül), Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 6 / 15

Mi legyen és mi ne legyen az include fájlban Mi legyen benne: függvény deklaráció (türelem sorra kerül), macro és fordítás idejű konstans (mindjárt jön), Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 6 / 15

Mi legyen és mi ne legyen az include fájlban Mi legyen benne: függvény deklaráció (türelem sorra kerül), macro és fordítás idejű konstans (mindjárt jön), típus definíciók (typedef)-ek, Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 6 / 15

Mi legyen és mi ne legyen az include fájlban Mi legyen benne: függvény deklaráció (türelem sorra kerül), macro és fordítás idejű konstans (mindjárt jön), típus definíciók (typedef)-ek, struktúra és union definíciók (ez is jön még) Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 6 / 15

Mi legyen és mi ne legyen az include fájlban Mi legyen benne: függvény deklaráció (türelem sorra kerül), macro és fordítás idejű konstans (mindjárt jön), típus definíciók (typedef)-ek, struktúra és union definíciók (ez is jön még) Ne legyen benne: Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 6 / 15

Mi legyen és mi ne legyen az include fájlban Mi legyen benne: függvény deklaráció (türelem sorra kerül), macro és fordítás idejű konstans (mindjárt jön), típus definíciók (typedef)-ek, struktúra és union definíciók (ez is jön még) Ne legyen benne: változó deklaráció, Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 6 / 15

Mi legyen és mi ne legyen az include fájlban Mi legyen benne: függvény deklaráció (türelem sorra kerül), macro és fordítás idejű konstans (mindjárt jön), típus definíciók (typedef)-ek, struktúra és union definíciók (ez is jön még) Ne legyen benne: változó deklaráció, függvény definíció Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 6 / 15

#define utasítás Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 7 / 15

#define utasítás Szerepe kettős: Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 7 / 15

#define utasítás Szerepe kettős: fordításidejű konstanst definiál, Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 7 / 15

#define utasítás Szerepe kettős: fordításidejű konstanst definiál, makrót definiál Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 7 / 15

#define utasítás Szerepe kettős: fordításidejű konstanst definiál, makrót definiál Szintaktikailag: Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 7 / 15

#define utasítás Szerepe kettős: fordításidejű konstanst definiál, makrót definiál Szintaktikailag: #define NEV MIT Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 7 / 15

#define utasítás Szerepe kettős: fordításidejű konstanst definiál, makrót definiál Szintaktikailag: #define NEV MIT A #define után kell legalább egy szóköz jellegű karaternek lenni, Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 7 / 15

#define utasítás Szerepe kettős: fordításidejű konstanst definiál, makrót definiál Szintaktikailag: #define NEV MIT A #define után kell legalább egy szóköz jellegű karaternek lenni, utána jön a konstans, vagy makró neve, Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 7 / 15

#define utasítás Szerepe kettős: fordításidejű konstanst definiál, makrót definiál Szintaktikailag: #define NEV MIT A #define után kell legalább egy szóköz jellegű karaternek lenni, utána jön a konstans, vagy makró neve, majd újabb szóköz(ök) és jön, amit helyettesíteni akarunk Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 7 / 15

#define utasítás Szerepe kettős: fordításidejű konstanst definiál, makrót definiál Szintaktikailag: #define NEV MIT A #define után kell legalább egy szóköz jellegű karaternek lenni, utána jön a konstans, vagy makró neve, majd újabb szóköz(ök) és jön, amit helyettesíteni akarunk Ekkor már lehetnek szóközök is a mezőben Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 7 / 15

#define utasítás Szerepe kettős: fordításidejű konstanst definiál, makrót definiál Szintaktikailag: #define NEV MIT A #define után kell legalább egy szóköz jellegű karaternek lenni, utána jön a konstans, vagy makró neve, majd újabb szóköz(ök) és jön, amit helyettesíteni akarunk Ekkor már lehetnek szóközök is a mezőben A sort a sorvég karakter zárja Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 7 / 15

#define utasítás Szerepe kettős: fordításidejű konstanst definiál, makrót definiál Szintaktikailag: #define NEV MIT A #define után kell legalább egy szóköz jellegű karaternek lenni, utána jön a konstans, vagy makró neve, majd újabb szóköz(ök) és jön, amit helyettesíteni akarunk Ekkor már lehetnek szóközök is a mezőben A sort a sorvég karakter zárja Ha nem férünk ki az utolsó mezőnél egy sorban, akkor az utolsó mező \karakterekkel törhető Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 7 / 15

#define utasítás Szerepe kettős: fordításidejű konstanst definiál, makrót definiál Szintaktikailag: #define NEV MIT A #define után kell legalább egy szóköz jellegű karaternek lenni, utána jön a konstans, vagy makró neve, majd újabb szóköz(ök) és jön, amit helyettesíteni akarunk Ekkor már lehetnek szóközök is a mezőben A sort a sorvég karakter zárja Ha nem férünk ki az utolsó mezőnél egy sorban, akkor az utolsó mező \karakterekkel törhető Pl: #define RNG (a>x && A<X+w && \ b>y && b<y+h) Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 7 / 15

Fordításidejű konstans definálása Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 8 / 15

Fordításidejű konstans definálása Ezt írjuk a forrásba: Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 8 / 15

Fordításidejű konstans definálása Ezt írjuk a forrásba: #define NULLA 0 a=nulla; Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 8 / 15

Fordításidejű konstans definálása Ezt írjuk a forrásba: #define NULLA 0 a=nulla; Ez kerül az előfeldolgozás után az átmeneti állományba: Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 8 / 15

Fordításidejű konstans definálása Ezt írjuk a forrásba: #define NULLA 0 a=nulla; Ez kerül az előfeldolgozás után az átmeneti állományba: a=0; Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 8 / 15

Fordításidejű konstans definálása Ezt írjuk a forrásba: #define NULLA 0 a=nulla; Ez kerül az előfeldolgozás után az átmeneti állományba: a=0; Miért jó ez nekünk Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 8 / 15

Fordításidejű konstans definálása Ezt írjuk a forrásba: #define NULLA 0 a=nulla; Ez kerül az előfeldolgozás után az átmeneti állományba: a=0; Miért jó ez nekünk Mert egyetlen átírással akár több száz helyen is módosíthatunk értéket Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 8 / 15

Makró definiálás Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 9 / 15

Makró definiálás Ezt írjuk a forrásba: Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 9 / 15

Makró definiálás Ezt írjuk a forrásba: #define MAX(a,b) (a>b)?(a),(b) z=max(x,y); Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 9 / 15

Makró definiálás Ezt írjuk a forrásba: #define MAX(a,b) (a>b)?(a),(b) z=max(x,y); Ez kerül az előfeldolgozás után az átmeneti állományba: Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 9 / 15

Makró definiálás Ezt írjuk a forrásba: #define MAX(a,b) (a>b)?(a),(b) z=max(x,y); Ez kerül az előfeldolgozás után az átmeneti állományba: z=x>y?x:y; Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 9 / 15

#undef utasítás Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 10 / 15

#undef utasítás Egy #define hatása, vagy az aktuális forrásállomány végéig tart, Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 10 / 15

#undef utasítás Egy #define hatása, vagy az aktuális forrásállomány végéig tart, vagy egy az adott szimbólumra vonatkozó #undef utasításig Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 10 / 15

#undef utasítás Egy #define hatása, vagy az aktuális forrásállomány végéig tart, vagy egy az adott szimbólumra vonatkozó #undef utasításig Példa: #define NULLA 0 Itt érvényes #undef NULLA Itt már nem érvényes Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 10 / 15

#undef utasítás Egy #define hatása, vagy az aktuális forrásállomány végéig tart, vagy egy az adott szimbólumra vonatkozó #undef utasításig Példa: #define NULLA 0 Itt érvényes #undef NULLA Itt már nem érvényes Az #undef mind a fordítás idejű konstansokra, mind a makrókra alkalmazható Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 10 / 15

A feltételes fordítás Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 11 / 15

A feltételes fordítás A feltételes fordítás fogalma azt jelenti, hogy egy progranrészlet a fordítási folyamat során átkerül-e a forráskódból az átmeneti állományba, vagy nem kerül át Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 11 / 15

A feltételes fordítás A feltételes fordítás fogalma azt jelenti, hogy egy progranrészlet a fordítási folyamat során átkerül-e a forráskódból az átmeneti állományba, vagy nem kerül át Normál esetben természetesen - alaposan megdolgozva - átkerül Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 11 / 15

A feltételes fordítás A feltételes fordítás fogalma azt jelenti, hogy egy progranrészlet a fordítási folyamat során átkerül-e a forráskódból az átmeneti állományba, vagy nem kerül át Normál esetben természetesen - alaposan megdolgozva - átkerül Azonban kiválasztott kódrészletek esetén ez vezérelhető Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 11 / 15

A feltételes fordítás A feltételes fordítás fogalma azt jelenti, hogy egy progranrészlet a fordítási folyamat során átkerül-e a forráskódból az átmeneti állományba, vagy nem kerül át Normál esetben természetesen - alaposan megdolgozva - átkerül Azonban kiválasztott kódrészletek esetén ez vezérelhető Miért használunk feltételes fordítást: Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 11 / 15

A feltételes fordítás A feltételes fordítás fogalma azt jelenti, hogy egy progranrészlet a fordítási folyamat során átkerül-e a forráskódból az átmeneti állományba, vagy nem kerül át Normál esetben természetesen - alaposan megdolgozva - átkerül Azonban kiválasztott kódrészletek esetén ez vezérelhető Miért használunk feltételes fordítást: platfrom független kódot szeretnénk írni, hardver független kódot szeretnénk írni, mást szeretnénk a fejlesztési verzióban, mint az éles futó programban, stb Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 11 / 15

A feltételes fordítás A feltételes fordítás fogalma azt jelenti, hogy egy progranrészlet a fordítási folyamat során átkerül-e a forráskódból az átmeneti állományba, vagy nem kerül át Normál esetben természetesen - alaposan megdolgozva - átkerül Azonban kiválasztott kódrészletek esetén ez vezérelhető Miért használunk feltételes fordítást: platfrom független kódot szeretnénk írni, hardver független kódot szeretnénk írni, mást szeretnénk a fejlesztési verzióban, mint az éles futó programban, stb A feltételes fordítás vezérlésére szolgálnak a következő utasítások: #if, #else, #elif, #ifdef, #ifndef, #endif Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 11 / 15

A feltételes fordítás A feltételes fordítás fogalma azt jelenti, hogy egy progranrészlet a fordítási folyamat során átkerül-e a forráskódból az átmeneti állományba, vagy nem kerül át Normál esetben természetesen - alaposan megdolgozva - átkerül Azonban kiválasztott kódrészletek esetén ez vezérelhető Miért használunk feltételes fordítást: platfrom független kódot szeretnénk írni, hardver független kódot szeretnénk írni, mást szeretnénk a fejlesztési verzióban, mint az éles futó programban, stb A feltételes fordítás vezérlésére szolgálnak a következő utasítások: #if, #else, #elif, #ifdef, #ifndef, #endif Figyelem mindent feltételes fordítási blokkot #endif utasítás zár le!! Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 11 / 15

#if, #else, #endif Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 12 / 15

#if, #else, #endif #if kifejezés Feltételes blokk #endif Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 12 / 15

#if, #else, #endif #if kifejezés Feltételes blokk #endif Ha a kifejezés igaz a Feltételes blokk fordításra kerül Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 12 / 15

#if, #else, #endif #if kifejezés Feltételes blokk #endif Ha a kifejezés igaz a Feltételes blokk fordításra kerül Ha a kifejezéshamis az #if és az #endif között bármi lehet (még gyerek vers is) Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 12 / 15

#if, #else, #endif #if kifejezés Feltételes blokk #endif Ha a kifejezés igaz a Feltételes blokk fordításra kerül Ha a kifejezéshamis az #if és az #endif között bármi lehet (még gyerek vers is) #if kifejezés Feltételes blokk1 #elsẹ Feltételes blokk2 #endif Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 12 / 15

#if, #else, #endif #if kifejezés Feltételes blokk #endif Ha a kifejezés igaz a Feltételes blokk fordításra kerül Ha a kifejezéshamis az #if és az #endif között bármi lehet (még gyerek vers is) #if kifejezés Feltételes blokk1 #elsẹ Feltételes blokk2 #endif Ha a kifejezés igaz a Feltételes blokk1 fordításra kerül Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 12 / 15

#if, #else, #endif #if kifejezés Feltételes blokk #endif Ha a kifejezés igaz a Feltételes blokk fordításra kerül Ha a kifejezéshamis az #if és az #endif között bármi lehet (még gyerek vers is) #if kifejezés Feltételes blokk1 #elsẹ Feltételes blokk2 #endif Ha a kifejezés igaz a Feltételes blokk1 fordításra kerül Ha a kifejezés hamis a Feltételes blokk2 kerül fordításra Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 12 / 15

#elif utasítás Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 13 / 15

#elif utasítás Ez tualjdonképpen egy #else #if tehát egyedül nem használható Előnye, hogy egy hosszú - többszörös elágazást lehet csinálni a segítségével egy darab #endif-el Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 13 / 15

#elif utasítás Ez tualjdonképpen egy #else #if tehát egyedül nem használható Előnye, hogy egy hosszú - többszörös elágazást lehet csinálni a segítségével egy darab #endif-el #if kif1 #elif kif2 #elif kif3 #elif kif4 #elif kifn #endif Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 13 / 15

#elif utasítás Ez tualjdonképpen egy #else #if tehát egyedül nem használható Előnye, hogy egy hosszú - többszörös elágazást lehet csinálni a segítségével egy darab #endif-el #if kif1 #elif kif2 #elif kif3 #elif kif4 #elif kifn #endif Megjegyzés: Dr Schuster György az () ennyirec programozási bonyolult nyelv feltételes Előfeldolgozófordítás utasítások ritka 2011 május 3 13 / 15

#ifdef és #ifndef utasítások Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 14 / 15

#ifdef és #ifndef utasítások Az #ifdef KONSTANS utasítás akkor tekinthető igaznak, ha a KONSTANS definiálásra került Teljesen mindegy, hogy milyen értékkel Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 14 / 15

#ifdef és #ifndef utasítások Az #ifdef KONSTANS utasítás akkor tekinthető igaznak, ha a KONSTANS definiálásra került Teljesen mindegy, hogy milyen értékkel Az #ifndef KONSTANS utasítás akkor tekinthető igaznak, ha a KONSTANS nem került definiálásra Tipikus felhasználása header állományokban, pl: Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 14 / 15

#ifdef és #ifndef utasítások Az #ifdef KONSTANS utasítás akkor tekinthető igaznak, ha a KONSTANS definiálásra került Teljesen mindegy, hogy milyen értékkel Az #ifndef KONSTANS utasítás akkor tekinthető igaznak, ha a KONSTANS nem került definiálásra Tipikus felhasználása header állományokban, pl: #ifndef char 95NEVHEADER #define char 95NEVHEADER 0 a header fájl érdemi része #endif Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 14 / 15

#pragma, #warning utasítás Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 15 / 15

#pragma, #warning utasítás A #pragma előfeldolgozó utasítással a fordító programnak tudunk különböző utasításokat adni Például adott figyelmeztetéseket ki, illetve be tudunk vele kapcsolni Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 15 / 15

#pragma, #warning utasítás A #pragma előfeldolgozó utasítással a fordító programnak tudunk különböző utasításokat adni Például adott figyelmeztetéseket ki, illetve be tudunk vele kapcsolni A #warning arra szolgál, hogy fordítás közben a felhasználónak küldjünk üzenetet Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 15 / 15

#pragma, #warning utasítás A #pragma előfeldolgozó utasítással a fordító programnak tudunk különböző utasításokat adni Például adott figyelmeztetéseket ki, illetve be tudunk vele kapcsolni A #warning arra szolgál, hogy fordítás közben a felhasználónak küldjünk üzenetet Pl: #warning Hello Ekkor a Hello üzenet kiírásra kerül a fordítás során Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 15 / 15

#pragma, #warning utasítás A #pragma előfeldolgozó utasítással a fordító programnak tudunk különböző utasításokat adni Például adott figyelmeztetéseket ki, illetve be tudunk vele kapcsolni A #warning arra szolgál, hogy fordítás közben a felhasználónak küldjünk üzenetet Pl: #warning Hello Ekkor a Hello üzenet kiírásra kerül a fordítás során A ## utasítás (inkább operátor) szövegrészletek összefűzését végzi Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 15 / 15

#pragma, #warning utasítás A #pragma előfeldolgozó utasítással a fordító programnak tudunk különböző utasításokat adni Például adott figyelmeztetéseket ki, illetve be tudunk vele kapcsolni A #warning arra szolgál, hogy fordítás közben a felhasználónak küldjünk üzenetet Pl: #warning Hello Ekkor a Hello üzenet kiírásra kerül a fordítás során A ## utasítás (inkább operátor) szövegrészletek összefűzését végzi Pl: a forrásban value##a=5; Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 15 / 15

#pragma, #warning utasítás A #pragma előfeldolgozó utasítással a fordító programnak tudunk különböző utasításokat adni Például adott figyelmeztetéseket ki, illetve be tudunk vele kapcsolni A #warning arra szolgál, hogy fordítás közben a felhasználónak küldjünk üzenetet Pl: #warning Hello Ekkor a Hello üzenet kiírásra kerül a fordítás során A ## utasítás (inkább operátor) szövegrészletek összefűzését végzi Pl: a forrásban value##a=5; a befordított kódban valuea=5; Nagyon hasznos programgenerátor írásánál Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 15 / 15