Forum: Compiler & IDEs Falsche Übergabe von Variable in Funktion


von Thomas U. (morrie)


Lesenswert?

Hallo Leute,
nachdem ich jetzt ein Fehler nach dem nächsten gefunden habe bin ich 
wieder mal an einem Punkt an dem ich nicht weiter weiß.
Ich habe eine Funktion der ich 2 Parameter übergeben will:
1
uint8_t execute_command(uint8_t com,uint32_t val1)

Wenn ich jetzt die Funktion so aufrufe:
1
result = execute_command(136,5)

...dann kommt in der Simulation in der Funktion als com 136 an und als 
val1 kommt 327680 an. Wenn ich uint32_t durch uint16_t ersetze, dann 
funktioniert es und es kommt die 5 an.

Was mache ich falsch, bzw. wie kann das sein?

mfg

morrie

von Peter II (Gast)


Lesenswert?

Thomas U. schrieb:
> ...dann kommt in der Simulation in der Funktion als com 136 an und als
> val1 kommt 327680

zeigt mal deine ausgabe. Die Zahl ohne die letzte 0 kommt mir sehr 
bekannt vor.

von Hmm (Gast)


Lesenswert?

Das kann nicht sein, falls alles was Du hier nicht zeigst, mit dem hier 
gezeigten kohärent ist.

Mach mal ein minimales, kompilierbares Beispiel, das diesen Fehler 
zeigt. Nenne uns Compiler und Debugger und CPU.

von Peter II (Gast)


Lesenswert?

bekommst du eine Warnung? Hast du eine passende Forward Deklaration? 
Zeigt mal den kompletten code.

von dummschwaetzender schlaumeier (Gast)


Lesenswert?

ubergebe mal
result = execute_command(136,5l)

von Thomas U. (morrie)


Lesenswert?

Hallo,
ich habe gerade mal allen überflüssigen Code entfernt und dann hat es 
funktioniert. Ich habe also einen Ansatzpunkt den Fehler zu finden. Ich 
muss jetzt mal systematisch den Code löschen bis der Fehler weg ist.
Ich melde mich dann nochmal wenn ich den Fehler gefunden habe.



Anbei nochmal das Output File:

------ Build started: Project: ppt0.1, Configuration: Debug AVR ------
Build started.
Project "ppt0.1.cproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition; 
('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "C:\Program Files (x86)\Atmel\Atmel Studio 
6.1\Vs\Compiler.targets" from project "C:\Users\Deborah\Documents\Atmel 
Studio\ppt0.1\ppt0.1\ppt0.1.cproj" (target "Build" depends on it):
  Task "RunCompilerTask"
    C:\Program Files (x86)\Atmel\Atmel Studio 6.1\shellUtils\make.exe 
all
    Building file: .././CodeInterpreter.c
    Invoking: AVR/GNU C Compiler : 3.4.2
    "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 
GCC\Native\3.4.2.1002\avr8-gnu-toolchain\bin\avr-gcc.exe" 
-funsigned-char -funsigned-bitfields -O1 -ffunction-sections 
-fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega32a -c 
-std=gnu99 -MD -MP -MF "CodeInterpreter.d" -MT"CodeInterpreter.d" 
-MT"CodeInterpreter.o"   -o "CodeInterpreter.o" ".././CodeInterpreter.c"
    Finished building: .././CodeInterpreter.c
    Building file: .././menuescreens.c
    Invoking: AVR/GNU C Compiler : 3.4.2
    "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 
GCC\Native\3.4.2.1002\avr8-gnu-toolchain\bin\avr-gcc.exe" 
-funsigned-char -funsigned-bitfields -O1 -ffunction-sections 
-fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega32a -c 
-std=gnu99 -MD -MP -MF "menuescreens.d" -MT"menuescreens.d" 
-MT"menuescreens.o"   -o "menuescreens.o" ".././menuescreens.c"
    .././menuescreens.c: In function 'Men_Universaltimer':
    Finished building: .././menuescreens.c
    Building file: .././ppt0.1.c
    Invoking: AVR/GNU C Compiler : 3.4.2
    "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 
GCC\Native\3.4.2.1002\avr8-gnu-toolchain\bin\avr-gcc.exe" 
-funsigned-char -funsigned-bitfields -O1 -ffunction-sections 
-fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega32a -c 
-std=gnu99 -MD -MP -MF "ppt0.1.d" -MT"ppt0.1.d" -MT"ppt0.1.o"   -o 
"ppt0.1.o" ".././ppt0.1.c"
    In file included from .././ppt0.1.c:12:0:
C:\Users\Deborah\Documents\Atmel Studio\ppt0.1\ppt0.1\ppt0.1.h(14,0): 
"XTAL" redefined [enabled by default]
    In file included from .././ppt0.1.c:10:0:
C:\Users\Deborah\Documents\Atmel Studio\ppt0.1\ppt0.1\lcd.h(47,0): this 
is the location of the previous definition
    .././ppt0.1.c: In function 'main':
C:\Users\Deborah\Documents\Atmel Studio\ppt0.1\ppt0.1\ppt0.1.c(22,2): 
implicit declaration of function 'init_Menue' 
[-Wimplicit-function-declaration]
C:\Users\Deborah\Documents\Atmel Studio\ppt0.1\ppt0.1\ppt0.1.c(27,2): 
implicit declaration of function 'execute_command' 
[-Wimplicit-function-declaration]
C:\Users\Deborah\Documents\Atmel Studio\ppt0.1\ppt0.1\ppt0.1.c(58,3): 
implicit declaration of function 'ExecuteMenue' 
[-Wimplicit-function-declaration]
    Finished building: .././ppt0.1.c
    Building target: ppt0.1.elf
    Invoking: AVR/GNU Linker : 3.4.2
    "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 
GCC\Native\3.4.2.1002\avr8-gnu-toolchain\bin\avr-gcc.exe" -o ppt0.1.elf 
CodeInterpreter.o DrehImpulsGeber.o general_functions.o lcd.o menue.o 
menuescreens.o ppt0.1.o timer.o   -Wl,-Map="ppt0.1.map" 
-Wl,--start-group -Wl,-lm  -Wl,--end-group -Wl,--gc-sections 
-mmcu=atmega32a
    Finished building target: ppt0.1.elf
    "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 
GCC\Native\3.4.2.1002\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R 
.eeprom -R .fuse -R .lock -R .signature  "ppt0.1.elf" "ppt0.1.hex"
    "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 
GCC\Native\3.4.2.1002\avr8-gnu-toolchain\bin\avr-objcopy.exe" -j .eeprom 
--set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 
--no-change-warnings -O ihex "ppt0.1.elf" "ppt0.1.eep" || exit 0
    "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 
GCC\Native\3.4.2.1002\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S 
"ppt0.1.elf" > "ppt0.1.lss"
    "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 
GCC\Native\3.4.2.1002\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R 
.eeprom -R .fuse -R .lock -R .signature  "ppt0.1.elf" "ppt0.1.srec"
    "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 
GCC\Native\3.4.2.1002\avr8-gnu-toolchain\bin\avr-size.exe" "ppt0.1.elf"
       text     data      bss      dec      hex  filename
       6520      926       32     7478     1d36  ppt0.1.elf
  Done executing task "RunCompilerTask".
  Task "RunOutputFileVerifyTask"
        Program Memory Usage   :  7446 bytes   22,7 % Full
        Data Memory Usage     :  958 bytes   46,8 % Full
  Done executing task "RunOutputFileVerifyTask".
Done building target "CoreBuild" in project "ppt0.1.cproj".
Target "PostBuildEvent" skipped, due to false condition; 
('$(PostBuildEvent)' != '') was evaluated as ('' != '').
Target "Build" in file "C:\Program Files (x86)\Atmel\Atmel Studio 
6.1\Vs\Avr.common.targets" from project 
"C:\Users\Deborah\Documents\Atmel Studio\ppt0.1\ppt0.1\ppt0.1.cproj" 
(entry point):
Done building target "Build" in project "ppt0.1.cproj".
Done building project "ppt0.1.cproj".

Build succeeded.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped 
==========

von Thomas U. (morrie)


Lesenswert?

Hallo,
wenn ich 5l eingebe, dann funktioniert es. Wofür steht das l in dem 5l?

von Peter II (Gast)


Lesenswert?

Thomas U. schrieb:
> implicit declaration of function 'ExecuteMenue'

das ist das Problem, du hast keine Forward Deklaration.

von dummschwaetzender schlaumeier (Gast)


Lesenswert?

long

von g457 (Gast)


Lesenswert?

> implicit declaration of function 'init_Menue'
> implicit declaration of function 'execute_command'
> implicit declaration of function 'ExecuteMenue'

Die sind alle drei pöse.

HTH

von Thomas U. (morrie)


Lesenswert?

Das war ja wieder so ein dummer Fehler.
Danke euch für die schnellen Antworten. Kaum richtig gemacht schon 
gehts.

Danke,

morrie

von Peter II (Gast)


Lesenswert?

Thomas U. schrieb:
> Das war ja wieder so ein dummer Fehler.
> Danke euch für die schnellen Antworten. Kaum richtig gemacht schon
> gehts.

dann mach den Parameter -Werror an gcc dran, denn MUST du die fehler 
beheben.

von dummschwaetzender schlaumeier (Gast)


Lesenswert?


von g457 (Gast)


Lesenswert?

> dann mach den Parameter -Werror an gcc dran, denn MUST du die fehler
> beheben.

..vorzugsweise auch gleich noch -Wall, -Wextra und -pedantic. Sollte man 
mal zur Standardeinstellung erheben..

von Dr. Sommer (Gast)


Lesenswert?

g457 schrieb:
> Sollte man mal zur Standardeinstellung erheben..
Dann würden 99,9% der Programme gar nicht mehr compilen ;-)

von Yalu X. (yalu) (Moderator)


Lesenswert?

Dr. Sommer schrieb:
> g457 schrieb:
>> Sollte man mal zur Standardeinstellung erheben..
> Dann würden 99,9% der Programme gar nicht mehr compilen ;-)

Die eigenen schon, wenn man sie einigermaßen sorgfältig schreibt.

Und Programme von anderen bringen i.Allg. ein Makefile o.ä. mit den 
passenden Warnungs-/Fehlereinstellungen mit.

von Oliver S. (oliverso)


Lesenswert?

Nun ja, über das -pedantic kann man streiten.

Oliver

von Peter D. (peda)


Lesenswert?

g457 schrieb:
>> implicit declaration of function 'init_Menue'
>> implicit declaration of function 'execute_command'
>> implicit declaration of function 'ExecuteMenue'
>
> Die sind alle drei pöse.

Und diese auch:

Thomas U. schrieb:
> "XTAL" redefined

Sollte nur auf der Komandozeile definiert werden, z.B.
-DF_CPU=16.0e6

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.