[elektro] roppant kezdő C kérdés

potyo potyo.ada at gmail.com
Sat Apr 10 10:50:56 CEST 2010


Pedig de: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1905.pdf
(igaz, ez C++, de ebből a szempontból ugyanaz)
2.1.1.2
If a source file that is not empty does not end in a new-line
character, or ends in a new-line character
immediately preceded by a backslash character before any such splicing
takes place, the behavior is undefined.


Egyszerű példa. Csinálsz egy header fájlt, aminek az utolsó sora egy
// jellel kezdődő (egysoros) komment, így ( a ------ között levő a
fájl tartalma):
---------
// valtozo.h
unsigned char valtozo;
// valtozo a nyilvantartashoz
---------

Ezután beincludolod a c fájlba így
#include "valtozo.h"
unsigned char teszt;
...

Miután a preprocesszor lefutott, ezt adja át a fordítónak:

// valtozo.h
unsigned char valtozo;
// valtozo a nyilvantartashozunsigned char teszt;
.......

Tehát az include sort kompletten lecseréli a valtozo.h fájl
tartalmára, emiatt a c fájlban levő változó definiálása a kommentbe
esik, vagyis a fordító nem veszi figyelembe. Elismerem, hogy másképp
is lekezelhetné a preprocesszor, sőt valószínűleg vannak olyanok, amik
betesznek egy extra sortörést az include sorok után, és helyesen
fordítják le a kódot ettől függetlenül, de mégis célszerű, hogy ott
legyen az az újsor.

2010/4/10 Abraham <abraham at hu019pl.plus7.hu>:
>> > Nem véletlenül kértem úgy, hogy rakd fel valahová. Nézz bele egy hex
>> > editorral, vagy akár a total commander nézőkéjével Hexa módban,
> hogy a
>> > fájl végén ott van-e a 13 és a 10-es karakter (0D és 0A) az utolsó }
>> > után. Néha előfordult már, hogy valami más nem látható karakter
> került
>> > a fájl végére. Vagy pl. linuxon nem ugyanúgy van a sorvég jelölve,
>> > mint windows-on, aztán ebből is lehet keveredés.
>> >
>
> Ez az, amit soha nem ertek. Szerintem a C nyelv nem rendelkezik a
> forrasfile lezarasarol. En ezer eves Norton editort hasznalok.
> Linux alatt a gcc panaszkodik, mert ctrl Z van a file vegen.
> Az MSC sir, ha az utolso } után nincs soremeles.
> Miert foglalkozik ezzel egy compiler ?
>
> Gabor
>
> ----------------------------------------------------------------
> Ábrahám Gábor                           http://cdtransport.atw.hu/
> 7+ Számítógép Hálózati Kft.             Tel : (06-1) 248-3214
> 1118, Budapest, Homoród u. 17.          Fax : (06-1) 248-3216
>
> -----------------------------------------
>          elektro[-flame|-etc]
>



More information about the Elektro mailing list