C. Trükkök, Megoldások! És Rejtelmek?

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3228
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

C. Trükkök, Megoldások! És Rejtelmek?

HozzászólásSzerző: kapu48 » 2012. augusztus 30. csütörtök, 14:01

Valaki magyarázza már el a Makró helyettesítés fortélyát!

Például van 1 rutin:

Kód: Egész kijelölése

/*
 * Bit Reset
 * address
 * bits number
 */
void GLCD_BitReset(uint16_t glcd_address, uint8_t glcd_bitr){
   GLCD_SetAddressPointer(glcd_address);
   GLCD_WriteC_D(T6963CMD_BIT_RESET & glcd_bitr, GLCD_CMD, STATUSCHECK_MASK3);
}

Vár két értéket, és azt tovább adja másik két rutinnak.

Én így oldanám meg:

Kód: Egész kijelölése

#define GLCDBitSet(glcdaddress, glcdbits) ({GLCD_SetAddressPointer(glcdaddress); \
                                 GLCD_WriteC_D(T6963CMD_Bit_Set & glcdbits, GLCD_CMD, STATUSCHECK_MASK3);})

Mi benne a hiba?

Mert utána nem hajlandó lefordulni, és a hibajelzés:

line 46: first defined here main.c C/C++ Problem


:?

Avatar
glezmen
Bitmanipulátor
Hozzászólások: 139
Csatlakozott: 2012. augusztus 9. csütörtök, 6:00
Tartózkodási hely: Noszlop
Kapcsolat:

HozzászólásSzerző: glezmen » 2012. augusztus 30. csütörtök, 15:04

a sima zarojel felesleges a blokk kore (sot, kimondottan hibas)

egyebkent erre a feladatra tipikusan ertelmetlen/ellenjavalt makrot irni, erre sokkal jobb egy kozonseges inline fuggveny (ugyanaz lesz a vegen a kod, csak olvashatobb a forras)

a masodik sor egyben van a harmadikkal, ugye? nem csak lemaradt a \ ?

azonkivul jo lenne a teljes hibauzenet (ennek a fele hianyzik), de arra tippelnek hogy valami definicios problema lesz (hogy pontosan mi, azt a hibauzenet elotti sor mondja meg)

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3228
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

HozzászólásSzerző: kapu48 » 2012. augusztus 30. csütörtök, 15:20

A hibaözenet ide mutat:
line 46>: int main(void){

Viszont Valahol máshól keresendő!
Mert kitöröltem az egész próbálkozásomat.
Visszaállítva az előzőleg még hibátlan állapotot.
De a hibaüzenet megmaradt, ugyan az.

Sajnos nem oda mutat ahol keresendő! Fúj Gcc!!!

Sajnos az inline-vel is ugyan így jártam!
És a zárójelek kiszedésével is.

Csak nem értem eddig hibátlannak tűnt, és futott is az egész program!


:cry:

Avatar
glezmen
Bitmanipulátor
Hozzászólások: 139
Csatlakozott: 2012. augusztus 9. csütörtök, 6:00
Tartózkodási hely: Noszlop
Kapcsolat:

HozzászólásSzerző: glezmen » 2012. augusztus 30. csütörtök, 15:38

kapu48 írta:A hibaözenet ide mutat:
line 46>: int main(void){

Viszont Valahol máshól keresendő!
Mert kitöröltem az egész próbálkozásomat.
Visszaállítva az előzőleg még hibátlan állapotot.
De a hibaüzenet megmaradt, ugyan az.

Sajnos nem oda mutat ahol keresendő! Fúj Gcc!!!

Sajnos az inline-vel is ugyan így jártam!
És a zárójelek kiszedésével is.

Csak nem értem eddig hibátlannak tűnt, és futott is az egész program!


:cry:


nem 'fuj gcc', a gcc (ellentetben a visual studioval pl) pontosan megmondja hogy mi a baj
de ha nem masolod be a teljes hibauzenetet, akkor nem fogok tudni segiteni...

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3228
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

HozzászólásSzerző: kapu48 » 2012. augusztus 30. csütörtök, 15:47

Tessék:


**** Build of configuration Debug for project STM32F4_Discovery_IO_Toggle ****

**** Internal Builder is used for build ****
arm-atollic-eabi-gcc -c -mthumb -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -std=gnu90 -DUSE_STM32F4_DISCOVERY -DHSE_VALUE=8000000 -DSTM32F4XX -DUSE_STDPERIPH_DRIVER -I../src -I..\Libraries\CMSIS\Include -I..\Libraries\Device\STM32F4xx\Include -I..\Libraries\STM32F4xx_StdPeriph_Driver\inc -I..\Utilities\STM32F4-Discovery -O0 -ffunction-sections -fdata-sections -g -Wall -o src\main.o ..\src\main.c
arm-atollic-eabi-gcc -c -mthumb -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -std=gnu90 -DUSE_STM32F4_DISCOVERY -DHSE_VALUE=8000000 -DSTM32F4XX -DUSE_STDPERIPH_DRIVER -I../src -I..\Libraries\CMSIS\Include -I..\Libraries\Device\STM32F4xx\Include -I..\Libraries\STM32F4xx_StdPeriph_Driver\inc -I..\Utilities\STM32F4-Discovery -O0 -ffunction-sections -fdata-sections -g -Wall -o src\glcd_t6963c.o ..\src\glcd_t6963c.c
..\src\glcd_t6963c.c: In function 'GLCD_ReadData':
..\src\glcd_t6963c.c:308:16: warning: assignment makes integer from pointer without a cast [enabled by default]
mfpu=fpv4-sp-d16 -mfloat-abi=softfp -T..\stm32f4_flash.ld -static -Wl,-cref,-u,Reset_Handler -Wl,-Map=STM32F4_Discovery_IO_Toggle.map -Wl,--gc-sections -Wl,--defsym=malloc_getpagesize_P=0x1000
src\glcd_t6963c.o:(.bss.ui16_temp+0x0): multiple definition of `ui16_temp'
src\main.o:C:\Atolic\3\STM32F4_Discovery_IO_Toggle\Debug/..\src/main.c:45: first defined here
src\glcd_t6963c.o:(.bss.glcd_text_ram_home+0x0): multiple definition of `glcd_text_ram_home'
src\main.o:C:\Atolic\3\STM32F4_Discovery_IO_Toggle\Debug/..\src/main.c:45: first defined here
src\glcd_t6963c.o:(.bss.glcd_text_address_pointer+0x0): multiple definition of `glcd_text_address_pointer'
src\main.o:C:\Atolic\3\STM32F4_Discovery_IO_Toggle\Debug/..\src/main.c:45: first defined here
src\glcd_t6963c.o:(.bss.glcd_cgram_home+0x0): multiple definition of `glcd_cgram_home'
src\main.o:C:\Atolic\3\STM32F4_Discovery_IO_Toggle\Debug/..\src/main.c:45: first defined here
src\glcd_t6963c.o:(.bss.glcd_eror+0x0): multiple definition of `glcd_eror'
src\main.o:C:\Atolic\3\STM32F4_Discovery_IO_Toggle\Debug/..\src/main.c:45: first defined here
collect2: ld returned 1 exit status
Build error occurred, build is stopped
Time consumed: 1250 ms.
A hozzászólást 1 alkalommal szerkesztették, utoljára kapu48 2012. augusztus 30. csütörtök, 17:50-kor.

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3228
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

HozzászólásSzerző: kapu48 » 2012. augusztus 30. csütörtök, 16:04

Hiba üzenet:

Kód: Egész kijelölése

Description   Resource   Path   Location   Type
first defined here   main.c   /STM32F4_Discovery_IO_Toggle/src   line 45   C/C++ Problem


Ennyi! 8O

Avatar
glezmen
Bitmanipulátor
Hozzászólások: 139
Csatlakozott: 2012. augusztus 9. csütörtök, 6:00
Tartózkodási hely: Noszlop
Kapcsolat:

HozzászólásSzerző: glezmen » 2012. augusztus 30. csütörtök, 17:12

a hibauzenet ez:

"multiple definition of `ui16_temp' "

nem include-oltad be ugyanazt a .h filet tobbszor?
esetleg ha nem tul nagy, akkor masold be ide a komplett main.c-t

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3228
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

HozzászólásSzerző: kapu48 » 2012. augusztus 30. csütörtök, 17:48

Köszi, összehoztam!


Példa: calc.h
http://torusz.hu/prog/kr-c/files/04.html#4.5.
4.5. A header állományok


És a makró is összejött (zárójelek nélkül)!

Kód: Egész kijelölése

#define GLCD_BitReset(glcd_address, glcd_bitr) \
                     GLCD_SetAddressPointer(glcd_address);\
                     GLCD_WriteC_D(T6963CMD_BIT_RESET & glcd_bitr, GLCD_CMD, STATUSCHECK_MASK3);


Az egész kezdő próbálkozás fent van itt:
ARM STM32F4DISCOVERY board
http://avr.tavir.hu/modules.php?name=Fo ... 1703#21703

:)

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3228
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: C. Trükkök, Megoldások! És Rejtelmek?

HozzászólásSzerző: kapu48 » 2013. január 17. csütörtök, 18:03

Element14

Sok AVR-es alkalmazás Ankur Tomar-tól, C és ASM-ban.

Lehet válogatni, több oldalon keresztül!
http://www.element14.com/community/comm ... agSet=1448
:!: :arrow:

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3228
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: C. Trükkök, Megoldások! És Rejtelmek?

HozzászólásSzerző: kapu48 » 2013. március 30. szombat, 13:18

FatFs - Generic FAT File System Module:
http://elm-chan.org/fsw/ff/00index_e.html

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3228
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: C. Trükkök, Megoldások! És Rejtelmek?

HozzászólásSzerző: kapu48 » 2013. április 25. csütörtök, 14:15

Olvasni való:
A C programozási nyelv.pdf .hu 250 oldal.
B. W. Kernighan - D. M. Ritchie
http://vili.pmmf.hu/portal/hu/c/documen ... groupId=18
8)

Avatar
aqpa
Újonc
Újonc
Hozzászólások: 2
Csatlakozott: 2009. november 7. szombat, 7:00

Re: C. Trükkök, Megoldások! És Rejtelmek?

HozzászólásSzerző: aqpa » 2013. június 8. szombat, 12:05

Szép napot mindenkinek egy arduinis kezdő vagyok
egy olyan problémával akadtam el, hogy a goto, if return parancsokat szerettem volna használni
pl. ha x < y goto valahová ha x >=y return az elejére de nem jöttem tá atitkára
köszönöm asegitsédet előre is

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3228
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: C. Trükkök, Megoldások! És Rejtelmek?

HozzászólásSzerző: kapu48 » 2013. június 8. szombat, 15:04

Arduino Referencia 1.: Vezérlési szerkezetek:
http://harsanyireka.blog.hu/2012/07/04/ ... strukturak
:arrow:

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9886
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: C. Trükkök, Megoldások! És Rejtelmek?

HozzászólásSzerző: Robert » 2013. június 8. szombat, 17:25

Meg az Arduino notebook és a 60 napos Arduino tanfolyam - ha nem akarunk az TavIR oldaltól elszakadni.... :P

Avatar
aqpa
Újonc
Újonc
Hozzászólások: 2
Csatlakozott: 2009. november 7. szombat, 7:00

Re: C. Trükkök, Megoldások! És Rejtelmek?

HozzászólásSzerző: aqpa » 2013. június 9. vasárnap, 10:36

Köszönöm a segítséget !


Vissza: “C, C++, Visual C”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég