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

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Hozzászólás Szerző: kapu48 »

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

Hozzászólás Szerző: glezmen »

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: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

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

Hozzászólás Szerző: glezmen »

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: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

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: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

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

Hozzászólás Szerző: glezmen »

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: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

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: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Hozzászólás Szerző: kapu48 »

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: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Hozzászólás Szerző: kapu48 »

FatFs - Generic FAT File System Module:
http://elm-chan.org/fsw/ff/00index_e.html
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Hozzászólás Szerző: kapu48 »

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ás Szerző: aqpa »

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: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Hozzászólás Szerző: kapu48 »

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: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

Hozzászólás Szerző: Robert »

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ás Szerző: aqpa »

Köszönöm a segítséget !
Válasz küldése