Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Rozdiel medzi fgetc a getc

Programovací jazyk C umožňuje získať dáta zo súboru alebo z klávesnice pomocou funkcie fgetc alebo getc . Obe funkcie sa na ďalšie dostupné znak z prúdu dát a uložiť ich ako unsigned char . Tieto dve funkcie sú použité pre rovnaký účel a možno používať zameniteľne , ak sú prijaté určité opatrenia . Implementácia

sú často mnoho legitímnych spôsobov , ako vykonávať programovanie úlohy pomocou inštancie C language.For , ako fgetc a getc sú súčasťou štandardnej C include file , " stdio.h " . Fgetc je implementovaný ako funkcia C - jazyka . Getc , na druhej strane , môžu byť nájdené ako funkcia alebo ako makro . Napríklad , môžete nájsť getc zahrnuté v súbore " stdio.h " , ako ukazuje nasledujúci kód :

# define getc ( f ) ( ( - ( ( f ) - > level ) > = ? 0 ) ( unsigned char ) ( + + ( f ) - > curp ) [ -1 ] : _fgetc ( f ) )

Kedykoľvek C preprocesor analyzuje zdrojový kód a nájde identifikátor " getc " s parametrami uzavretých v zátvorkách , vloží týchto parametrov do náhradného token , ktorý definuje getc . Kým parametre nie sú výrazy , makro bude vždy vráti rovnaký výsledok ako fgetc .
Performance

getc je niekedy implementovaný ako makro pre zvýšenie výkonu aplikácií tým , že zvyšuje rýchlosť vykonávania a znížiť réžiu spracovania . Pri použití fgetc v programe , procesor a pamäť zdroje vynakladali sledovanie vykonávania pokynov funkcie je , premenné registra vytvorené rovnako ako skutočné práce , ktorú treba urobiť , aby sa vráti znak z dátového toku . Vzhľadom k tomu , getc makro je zostavený inline , ako je program stále beží , nie je funkcia hornej a aplikácia môže bežať rýchlejšie .
Nežiaduce účinky

Niekedy je je výhodné použiť namiesto fgetc getc , aby sa zabránilo chyby spôsobené makroexpanze vedľajších účinkov . Nežiaduce účinky sa môžu vyskytnúť , ak je getc makro uvedené parametre , ktoré sú výrazy skôr premenných . Nesprávne makro expanzia môže mať za následok niekoľko pokusov o prístup dátový tok , ktorý môže viesť k neočakávaným výsledkom . To môže byť zabránené pomocou fgetc miesto alebo vyhodnotení výrazu , potom prechádza výsledná premenná alebo ukazovateľ na getc .
Kompatibilita

fgetc ako funkcia je nájsť vo všetkých kompilátory C , ktoré zodpovedajú American National Standards Institute alebo štandardu ANSI C. Pokiaľ ide o getc , však, veci často nie sú také štandardné . Niekedy , getc je definovaná ako jednoducho ako iné meno pre fgetc : Spojené

# define getc ( __stream ) fgetc ( __stream )

getc je implementovaný ako funkcia , ale môžete zároveň zachovať kompatibilitu jazyka s inými kompilátory C a eliminovať možnosť makro vedľajších účinkov .

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené