Gast
#3219656
Kann ich #define XY in eine externe Datei.h legen und dieses XY in zwei Dateien code1.c und code2.c verwenden? Ich habe es mit include Datei.h in beiden .c Dateien versucht. Wurde trotzdem nicht geunden.
|
Anzeige
|
Externes #define ?
Gast
#3219656
Kann ich #define XY in eine externe Datei.h legen und dieses XY in zwei Dateien code1.c und code2.c verwenden? Ich habe es mit include Datei.h in beiden .c Dateien versucht. Wurde trotzdem nicht geunden.
Gast
#3219681
Bevor wir rätseln: zeig uns den Code / die Dateien.
Gast
#3219692
Japp, das sollte funktionieren, aber anscheinend machst Du was falsch... Datenkeimling schrieb: > in eine externe Datei.h legen und dieses XY in zwei Dateien code1.c und > code2.c verwenden? Datei.h ist noch so extern oder intern wie code1.c und code2.c. Das Wort "extern" passt in diesem Fall nicht. Datenkeimling schrieb: > Ich habe es mit include Datei.h in beiden .c Dateien > versucht. Wurde trotzdem nicht geunden. Include muss ganz am Anfang stehen und ansonsten könnte man noch weiter raten was da los ist, da keinen Code und so... Vllt. hilft dir auch dieses Kapitel weiter, da sollte ein Beispiel mit drinnen sein http://openbook.galileocomputing.de/c_von_a_bis_z/010_c_praeprozessor_002.htm#mjead11e16556a0e94647592cad9e3c437
Gast
#3219702
Datenkeimling schrieb: > Kann ich > > #define XY > > in eine externe Datei.h legen und dieses XY in zwei Dateien code1.c und > code2.c verwenden? Ich habe es mit include Datei.h in beiden .c Dateien > versucht. Wurde trotzdem nicht geunden. Hoffentlich kennst du den Unterschied zwischen #incude "extern.h" und #include <extern.h>
Gast
#3219704
Schon in dieser Konstellation wird das #define nicht gefunden (alle Dateien sind im Projekt eingebunden). additional_adc_adc_example1.h:
additional_adc_adc_example1.c:
ergibt: Error 1 'MENU_HEADER' undeclared (first use in this function) Datenkeimling schrieb: > Error 1 'MENU_HEADER' undeclared (first use in this function) Hier nicht:
Gast
#3219844
Der uC hier ist n SAM3X8E mit gcc. Keine Ahnung warum das bei dir funktioniert. Bei mir geht's immer noch net. Trotzdem, Danke. 73
Gast
#3219861
Datenkeimling schrieb: > ergibt: > Error 1 'MENU_HEADER' undeclared (first use in this function) Du hast vorhin von mehreren Dateien geschrieben... Wird wo anders das #define aufgelöst? - Wenn nicht, dann poste bitte alle Fehler.
Gast
#3219905
Nee, wird nirgends aufgelöst. Mach ich morgen mit weiter. Aber im Moment hab ichn schlimmeres Problem: scanf verursacht böse Speicherfehler.
mit Aufruf in main:
...
...
display_menu2();
display_menu(); //show only
start_adc();
...
...
vrursacht willkürlichen Speichermüll in der Ausgabe:
g_i_selected_channel = 0
===================================================
Menu: press a key to change the configuration.
---------------------------------------------------------
[X] 0: Set ADC trigger mode: Software.
[ ] 1: Set ADC trigger mode: ADTRG.
[ ] 2: Set ADC trigger mode: Timer TIOA.
[ ] 3: Set ADC trigger mode: PWMEvent Line.
[ ] 4: Set ADC trigger mode: Free run mode.
[E] T: Enable/Disable to transfer with PDC.
[D] S: Enable/D…‰±•to use user sequence mode.
[D] P: Enable/Disable ADC power save mode.
[D] G: Enable/Disable to set gain = 2x for potentiometer channel.
[D] O: Enable/Disable offset for potentiometer channel.
Q: Quit configuration and start ADC.
================êêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêj
Press any key to display configuration menu.
-- ADC Example --
-- Compiled: Jun 27 2013 21:36:39 --
Configure system tick to get 1ms tick period.
===================================================
Menu: press a key to change the configuration.
---------------------------------------------------------
Select channel:
uC istn SAM3X8E. Ich hab jetzt mehrere Datentypen für
g_i_selected_channel und für den Spezifizierer für scanf ausprobiert
weil ich eigentlich dachte der Speicher reicht nicht... hilft aber nicht
weiter.
Also mit gcc auf'm PC (MinGW) habe ich keine Probleme beim Kompilieren und zur Laufzeit, wenn ich: -diverse Sachen rausschmeiße die mir nicht vorliegen: #include "asf.h" #include "conf_board.h" "Pünktchen Pünktchen Pünktchen" Code -die richtigen Header inkludiere: #include <stdint.h> #include <stdio.h> Datenkeimling schrieb: > uC istn SAM3X8E. Die Information nützt uns eher wenig. Viel interessanter wäre es zu wissen, wie kompiliert wird. Von Hand an der Kommandozeile? Per makefile? Mit einer IDE (welche?) Außerdem kann auch und gerade so ein Menü-Code problemlos auf dem PC übersetzt und getestet werden, wenn die µC-Anteile vernünftig gekapselt sind. Dafür haben die C-Götter das #ifdef erschaffen. Ach ja und das hier: > uint8_t uc_char; schreibt man als: char uc_char; weil genau das gemeint ist. (char = character) Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|