Forum: Compiler & IDEs error: expected identifier or '(' befor numeric constant


von neeeewbiebie (Gast)


Lesenswert?

hi Leute,
ich habe eine kleine Frage,
beim Kompilieren eines Codes bekomme ich zweimal die folgende 
Fehlermeldung:
error: expected identifier or '(' befor numeric constant

weiss jemand vielleicht woran es liegen kann ???

danke im Voraus

von hans K. (bussard)


Lesenswert?

code ??
sprache - vermute mal C
compiler ?

von Εrnst B. (ernst)


Lesenswert?

> weiss jemand vielleicht woran es liegen kann

Du musst vor der Zahlenkonstante "(" oder einen Bezeichner schreiben?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

>weiss jemand vielleicht woran es liegen kann ???
Vermutlich ein Fehler im Programm...
Wie sieht das denn aus?
Für welchen Prozessor ist das geschrieben?
Mit welchem Compiler wird das übersetzt?

von neeeewbiebie (Gast)


Angehängte Dateien:

Lesenswert?

Danke für die schnelle Hilfe. :-)

Das Programm ist für die serielle Übertragung von Daten zu einem LCD.
Das ist einbischen lang weil Befehle und dann Zeichen einzeln und 
nacheinander geschickt werden.
Das ist für ein Tiny45
und wird mit dem Studio 4 compiliert

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

C-Quelltext wird übrigens deutlich lesbarer, wenn man ihn vernünftig 
einrückt bzw. formatiert.

Diesen Spaghettihaufen zu entwirren habe ich keine sonderliche Lust.

Wenn Du jetzt noch die Zeilennummer nennen könntest, in der Dein 
Compiler den Fehler erkennt ...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

>...ist einbischen lang...
Ja, ist es ;-)


Du hast aber nicht wirklich ein define für 5 und 10 angelegt, oder?  :-o
:
if (Tausendstel>=Fuenf){
  if(++Hundertstel>=Zehn){
:

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Wenn das eine ASCII-Fünf ist, dann versuchs doch mal sprintf().
Das macht aus einer Zahl einen String...

Und wenns keine ASCII-Fünf ist, dann versuchs doch mal mit sprintf()
und ziehe von jedem Zeichen vor dem Ausgeben '0' (ASCII-Null) ab...

von yalu (Gast)


Lesenswert?

Der Fehler lässt sich schwer finden, wenn du uns nicht die Zeile
verrätst, für die er gemeldet wird, oder die fehlenden Include-Dateien
mitlieferst.

Ich habe einen anderen Fehler entdeckt :)

Zeilen 190-193:
1
DispData = DispFL6;
2
SeriellSenden(0);
3
DispData = Zeichen_l;  // <===
4
SeriellSenden(1);

Müsste an der markierten Stelle nicht ein "Zeichen_a" statt
"Zeichen_l" stehen? Entsprechende Anpassungen müssen natürlich auch
die nächsten 40 Code-Zeilen gemacht werden.

von neeeewbiebie (Gast)


Lesenswert?

tut mir leid für das lange Code, aber momentan komme ich nicht weiter 
habe versucht es zu verkürzen nur leider meine Kenntnisse sind nicht so 
gross.

die Zeile sind 336 und 346

doch Fuenf und Zehn habe ich in einer Headerdatei definiert.

#define Zehn           10
#define Fuenf          5

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> die Zeile sind 336 und 346

Der von Dir gepostete Code hat 302 Zeilen.

von Rolf Magnus (Gast)


Lesenswert?

> tut mir leid für das lange Code, aber momentan komme ich nicht weiter
> habe versucht es zu verkürzen nur leider meine Kenntnisse sind nicht so
> gross.

Du hättest ja den Bereich posten können, in dem der Fehler ist, mit der 
beanstandeten Zeile irgenwie markiert.

> doch Fuenf und Zehn habe ich in einer Headerdatei definiert.
> #define Zehn           10
> #define Fuenf          5

Wozu um alles in der Welt soll das gut sein? Für den Fall, daß sich fünf 
mal ändert und auf einmal den Wert 6 hat?

von yalu (Gast)


Lesenswert?

> die Zeile sind 336 und 346

Die Datei hat 331 Zeilen.

> #define Zehn           10
> #define Fuenf          5

Schreibst du, wenn du in deinem Programm die Zahl 1396738471 brauchst
1
#define Einemilliardedreihundertsechsundneunzigmillionensiebenhundertachtunddreissigtausendvierhunderteinundsiebzig 1396738471
?

Übrigens ist der Wettbewerb, an dem du teilnehmen möchtest, leider
seit über einem Jahr schon vorbei:

  http://www.de.ioccc.org/main.html

'tschuldigung, ist einfach so über mich gekommen :)

von neeeewbiebie (Gast)


Lesenswert?

also die Seite brauche ich ehh nicht, will nicht an irgendein Wettbewerb 
teilnehmen
ich hätte besser Verbesserungsmöglichkeiten oder ein Rat erwartet

und die Fehler Tauchen in der genannten Zeilen auf, wo nix steht

von yalu (Gast)


Lesenswert?

> also die Seite brauche ich ehh nicht, will nicht an irgendein
> Wettbewerb teilnehmen ich hätte besser Verbesserungsmöglichkeiten
> oder ein Rat erwartet

Nichts für ungut, ich habe mich ja schon dafür entschuldigt.

Trotzdem spuckt der Compiler keine Fehlermeldungen für Zeilen aus, die
jenseits des Endes der Quellcodedatei liegen. Vielleicht ist der
Fehler gar nicht in der von dir geposteten Datei, sondern in einer der
Include-Dateien, die vielleicht tatsächlich länger ist. Der Dateiname
wird direkt vor der Zeilennummer angezeigt. Steht da wirklich

  disp-init.c:336: error: ...

Wenn ja, dann ist die Datei, die du kompiliert hast, mit der
geposteten nicht identisch.

von neeeewbiebie (Gast)


Lesenswert?

ist kein Ding Yalu :-) nur sind diese errors für ein Anfänger ein 
richtiger Schrek.

Ich bekomme genau die Meldung
disp-init.c:336: error: ...
disp-init.c:349: error: ...

> Wenn ja, dann ist die Datei, die du kompiliert hast, mit der
> geposteten nicht identisch.

Was soll man in so einem Fall tun

von holger (Gast)


Lesenswert?

>> Wenn ja, dann ist die Datei, die du kompiliert hast, mit der
>> geposteten nicht identisch.

>Was soll man in so einem Fall tun

Die Originale posten. Und zwar alle Dateien.
Dann kann man das mal selber durch den Compiler jagen.

von yalu (Gast)


Lesenswert?

Irgendwo in deinen Include-Dateien steht vermutlich
1
#define TestTasteZwei irgendetwas

oder
1
#define TestTasteZwei() irgendetwas

Gleiches gilt für TestTasteDrei

von neeeewbiebie (Gast)


Lesenswert?

die sind eine Menge

von holger (Gast)


Lesenswert?

>die sind eine Menge

#include "Display.h"
#include "Initialisierung.h"


Die beiden sollten reichen. Der Fehler liegt vermutlich darin.

von neeeewbiebie (Gast)


Angehängte Dateien:

Lesenswert?

okay
hier ist Display.h

von neeeewbiebie (Gast)


Angehängte Dateien:

Lesenswert?

und

von yalu (Gast)


Lesenswert?

Wie ich gesagt habe:

Initialisierung.h:
1
#define TestTasteZwei                3
2
#define TestTasteDrei                4

von yalu (Gast)


Lesenswert?

... und in disp_init.c sind zwei Funktionen mit diesem Namen
definiert. Der Präprozessor ersetzt die Namen durch "3" bzw. "4", so
dass dasteht:
1
void 3() {
2
...
3
}
4
5
void 4() {
6
...
7
}

So war das sicher nicht beabsichtigt :)

von yalu (Gast)


Lesenswert?

Vielleicht benennst du die Funktionen TestTasteZwei und
TestTasteDrei um in DispTestTasteZwei und DispTestTaste3. Diese
Namen passen auch besser zu DispInitialisierung und
DispAnzeigeMessung, bei denen es auf Grund des Prefixes Disp
keinen Konflikt mit den entsprechenden Defines in Initialisierung.h
gibt.

von neeeewbiebie (Gast)


Lesenswert?

Hee Mann :-) respekt, darin lag es
bessten Dank

nun sind neue Fehler aufgetaucht, die versuche dann zu lösen.

Danke an alle =:)

von Dieter (Gast)


Lesenswert?

Schmeiß die ganzen unnötigen defines raus!!

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.