eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › [Podstawy C] Inicjalizacja zmiennych CHAR wartością zależną od #define
Ilość wypowiedzi w tym wątku: 13

  • 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).

strony : [ 1 ] . 2


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: