-
1. Data: 2009-10-31 01:50:00
Temat: [Podstawy C] Inicjalizacja zmiennych CHAR wartością zależną od #define
Od: Konop <k...@g...pl>
Witam!!
Pytanie dotyczy podstaw C, ale do zastosowania w GCC dla AVRów ;)...
Chodzi mi o przypisanie "startowej" wartości dla tablich charow...
Zapis typu:
unsigned char[] = "ABC1";
działa poprawnie... jeśli chcę zastąpić znak '1' *znakiem* *o* *kodzie*
1 zrobię to tak:
unsigned char[] = "ABC/1";
i też wszystko będzie działało!! Mogę nawet zrobić tak:
unsigned char[] = "ABC" "/1";
i też będzie dobrze... ale ponieważ ta wartość /1 się zmieniać może w
poszczególnych kompilacjach, chciałbym to zrobić tak:
#define MOJ_ZNAK 1
unsigned char[] = "ABC .....
i właśnie - jak dokończyć tę linię aby wstawić w nią znak o kodzie 1
używając słowa MOJ_ZNAK? Tak, aby zmiania definicji zmieniła też
zawartość tej zmiennej... Próbowałem tak:
unsigned char[] = "ABC" MOJ_ZNAK
ale niestety nie działa... różnych cudów próbowałem i nic...
Zastosowanie - znaki specjalne na wyświetlaczu LCD.
Przepraszam, za pytanie trochę OT i bardzo bardzo nie na poziomie... ale
nie potrafię spytać googla tak, aby odpowiedział właściwie :(... dostaję
z reguły odpowiedzi na poziomie przypisania "ABC1" itp... przypomnieć
sobie też nie potrafię, metoda prób i błędów także nie zdała egzaminu.
Boję się, że to jakaś przypadłość GCC, dlatego wolę tutaj zapytać :)...
a może w ogóle się tego nie da zrobić??
Pozdrawiam
Konop
-
2. Data: 2009-10-31 06:51:20
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 02:50:00 +0100,
Konop <k...@g...pl> screamed:
> unsigned char[] = "ABC" "/1";
> i też będzie dobrze... ale ponieważ ta wartość /1 się zmieniać może w
> poszczególnych kompilacjach, chciałbym to zrobić tak:
>
> #define MOJ_ZNAK 1
Najprościej #define MOJ_ZNAK "1"
> unsigned char[] = "ABC .....
> i właśnie - jak dokończyć tę linię aby wstawić w nią znak o kodzie 1
> używając słowa MOJ_ZNAK? Tak, aby zmiania definicji zmieniła też
> zawartość tej zmiennej... Próbowałem tak:
> unsigned char[] = "ABC" MOJ_ZNAK
> ale niestety nie działa... różnych cudów próbowałem i nic...
>
Teraz zadziała.
--
[ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:238B ]
[ 07:50:27 user up 12242 days, 19:45, 1 user, load average: 0.99, 0.98, 0.40 ]
Insanity is hereditary: You can get it from your children. -- Sam Levinson
-
3. Data: 2009-10-31 10:51:42
Temat: Re: [Podstawy C] Inicjalizacja zmiennych CHAR wartością zależną od #define
Od: Zbych <z...@o...pl>
Konop pisze:
> Zapis typu:
> unsigned char[] = "ABC1";
> działa poprawnie... jeśli chcę zastąpić znak '1' *znakiem* *o* *kodzie*
> 1 zrobię to tak:
> unsigned char[] = "ABC/1";
Ukośnik powinien być w drugą stronę.
> i też wszystko będzie działało!! Mogę nawet zrobić tak:
> unsigned char[] = "ABC" "/1";
> i też będzie dobrze... ale ponieważ ta wartość /1 się zmieniać może w
> poszczególnych kompilacjach, chciałbym to zrobić tak:
>
> #define MOJ_ZNAK 1
> unsigned char[] = "ABC .....
> i właśnie - jak dokończyć tę linię aby wstawić w nią znak o kodzie 1
> używając słowa MOJ_ZNAK? Tak, aby zmiania definicji zmieniła też
> zawartość tej zmiennej... Próbowałem tak:
> unsigned char[] = "ABC" MOJ_ZNAK
#define MOJ_ZNAK "\1"
char aqq[] = "ABC" MOJ_ZNAK;
-
4. Data: 2009-10-31 11:18:07
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 11:51:42 +0100,
Zbych <z...@o...pl> screamed:
>> unsigned char[] = "ABC .....
>> i właśnie - jak dokończyć tę linię aby wstawić w nią znak o kodzie 1
>> używając słowa MOJ_ZNAK? Tak, aby zmiania definicji zmieniła też
>> zawartość tej zmiennej... Próbowałem tak:
>> unsigned char[] = "ABC" MOJ_ZNAK
>
> #define MOJ_ZNAK "\1"
>
> char aqq[] = "ABC" MOJ_ZNAK;
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"
--
[ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:230B ]
[ 12:16:57 user up 12242 days, 0:11, 1 user, load average: 0.99, 0.98, 0.40 ]
Just because I don't care doesn't meant I don't understand.
-
5. Data: 2009-10-31 13:19:31
Temat: Re: [Podstawy C] Inicjalizacja zmiennych CHAR wartością zależną od #define
Od: Konop <k...@g...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ć??
Pozdrawiam
Konop
-
6. Data: 2009-10-31 13:29:00
Temat: Re: [Podstawy C] Inicjalizacja zmiennych CHAR wartością zależną od #define
Od: Zbych <z...@o...pl>
Artur M. Piwko pisze:
> 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.
-
7. Data: 2009-10-31 13:30:26
Temat: Re: [Podstawy C] Inicjalizacja zmiennych CHAR wartością zależną od #define
Od: Piotr Gałka <p...@C...pl>
Użytkownik "Konop" <k...@g...pl> napisał w wiadomości
news:hchdh2$10c$1@inews.gazeta.pl...
> Czy da się to może jakoś pogodzić??
A może tak:
#define ZNAK 1
char txt[]={'A','l','a',ZNAK,0};
P.G.
-
8. Data: 2009-10-31 13:49:08
Temat: Re: [Podstawy C] Inicjalizacja zmiennych CHAR wartością zależną od #define
Od: Konop <k...@g...pl>
Piotr Gałka pisze:
>
> Użytkownik "Konop" <k...@g...pl> napisał w wiadomości
> news:hchdh2$10c$1@inews.gazeta.pl...
>> Czy da się to może jakoś pogodzić??
>
> A może tak:
> #define ZNAK 1
> char txt[]={'A','l','a',ZNAK,0};
Fakt, tak działa :).. Dzięki za informację, na pewno się przyda czasami
:) tyle tylko, że trochę upierdliwie się to wpisuje, bo każdy znak
trzeba w osobnym ' '... i o to mi właśnie chodzi - czy da się połączyć "
" z ' ' ?? Bo jak chcę zrobić parę napisów, z których każdy ma
kilkanaście, bądź kilkadziesiąt znaków i w środku wstawić jeden znak
specjalny, to już wolę zrobić to tak:
#define MOJ_ZNAK '\1'
#define MOJ_ZNAK_INIT "\1"
unsigned char txt[] = "Jakis tekst" MOJ_ZNAK_INIT "inny tekst";
unsigned char ch;
ch = MOJ_ZNAK;
Pozdrawiam
Konop
-
9. Data: 2009-10-31 18:18:12
Temat: Re: [Podstawy C] Inicjalizacja zmiennych CHAR wartością zależną od #define
Od: Adam Dybkowski <a...@4...pl>
Konop pisze:
>> #define ZNAK 1
>> char txt[]={'A','l','a',ZNAK,0};
>
> Fakt, tak działa :).. Dzięki za informację, na pewno się przyda czasami
> :) tyle tylko, że trochę upierdliwie się to wpisuje, bo każdy znak
> trzeba w osobnym ' '... i o to mi właśnie chodzi - czy da się połączyć "
> " z ' ' ?? Bo jak chcę zrobić parę napisów, z których każdy ma
> kilkanaście, bądź kilkadziesiąt znaków i w środku wstawić jeden znak
> specjalny, to już wolę zrobić to tak:
>
> #define MOJ_ZNAK '\1'
> #define MOJ_ZNAK_INIT "\1"
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).
--
Adam Dybkowski
http://dybkowski.net/
Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
-
10. Data: 2009-10-31 19:45:48
Temat: Re: [Podstawy C] Inicjalizacja zmiennych CHAR wartością zależną od #define
Od: Zbych <z...@o...pl>
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).