-
11. Data: 2009-10-31 22:31:08
Temat: Re: [Podstawy C] Inicjalizacja zmiennych CHAR wartością zależną od #define
Od: Konop <k...@g...pl>
Zbych pisze:
> Adam Dybkowski pisze:
>
>> Wykorzystaj operator # zamieniający identyfikator na ciąg znaków.
>> Zobacz w helpie do języka C (a dokładniej mówiąc do preprocesora).
>
> # mu nie pomoże, bo on chce mieć znak o kodzie 1, a nie 1 ascii (0x31).
Ehhh, a ja ambitnie sam chciałem dojść do tego jak użyć tego #... no ale
nic mi nie wyszło ;)... efekt był taki, jakiego można się było
spodziewać - zamiast znaku numer 1 uzyskalem napis MOJ_ZNAK na LCD ;)...
Pozdrawiam
Konop
-
12. Data: 2009-11-02 07:08:52
Temat: Re: [Podstawy C] Inicjalizacja zmiennych CHAR wartością zależną od #define
Od: "Artur M. Piwko" <m...@b...pl>
In the darkest hour on Sat, 31 Oct 2009 14:29:00 +0100,
Zbych <z...@o...pl> screamed:
>> Przy okazji, trochę to niebezpieczne... Za chwilkę może chcieć dodać
>> cokolwiek po \1 i okaże się, że od czasu do czasu trafi na to miejsce
>> jakaś cyfra.
>>
>> Lepiej od razu:
>>
>> #define MOJ_ZNAK "\x01"
>
> Nie ma takiej potrzeby jeśli teksty są rozdzielone cudzysłowami.
Jest, jeśli będzie chciał dać w tym #define. Może nie w tym przypadku,
ale jeśli tego typu regułę zastosuje później w innym miejscu.
--
[ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:232B ]
[ 08:07:26 user up 12244 days, 20:02, 1 user, load average: 0.90, 0.98, 0.59 ]
If dolphins are so smart, why did Flipper work for television?
-
13. Data: 2009-11-06 18:13:41
Temat: Re: [Podstawy C] Inicjalizacja zmiennych CHAR wartością zależną od #define
Od: "Pszemol" <P...@P...com>
"Konop" <k...@g...pl> wrote in message
news:hchdh2$10c$1@inews.gazeta.pl...
>> Najprościej #define MOJ_ZNAK "\1"
>> Teraz zadziała.
>
> Racja, dzięki za uwagi. Tego nie sprawdzałem z innego względu... część
> znaków używam w ten sposób:
> unsigned char ch;
>
> ch = MOJ_ZNAK;
>
> No i teraz to już nie działa :(... czyli wychodzi na to, że i tak muszę
> mieć dwa define'y ;)... jeden do wstawiania do napisów, drugi do użycia
> jako pojedynczy znak. Czy da się to może jakoś pogodzić??
Da się.
Masz
#define MOJ_ZNAK "\1"
I możesz potem zrobić tak:
ch = MOJ_ZNAK[0];
Zwróć uwagę że zapis "/1" w języku C oznacza faktycznie tablicę
typu "const char[2]". Pierwszym znakiem jest /1 a drugim zero (ASCIIZ).
Zapis ch = MOJ_ZNAK[0]; preprocesor rozwinie według Twojego #define
i kompilator to zobaczy jako:
ch = "/1"[0];
i nie powinien mieć problemów, mimo iż to może dziwnie wyglądać :-)
Zaletą takiego rozwiązania jest pojedynczy #define.