Forum: Compiler & IDEs GCC unter windows


von Frank (Gast)


Angehängte Dateien:

Lesenswert?

habe MinGw installiert. Und habe versucht in der Kommandozeile gcc -o 
prog main.c einzugeben, jedoch kriege ich eine riesen liste von 
Warnungen und keine ausführbare Datei;(


Was mache ich falsch?

von g457 (Gast)


Lesenswert?

> Was mache ich falsch?

Encoding?

von Frank (Gast)


Lesenswert?

g457 schrieb:
> Encoding?

was genau heißt das?
Ich habe auch schon
mingw32-gcc.exe main.c

und alle anderen, aber ich bekomme immer die selben warnungen.
Was bedeutet Null characters ignored? Was ist ein Null character?

von g457 (Gast)


Lesenswert?

> was genau heißt das?

Ich vermute Du hast ein falsches(tm) encoding angegeben (oder im 
flacshen charset gespeichert). Lass mal 'file' auf die main.c los. 
Behelfsweise lad mal eine Datei hier hoch (als Anhang!).

> Was ist ein Null character?

Eine 0, oder '\0', auch bekannt als 'Null'.

von Frank (Gast)


Angehängte Dateien:

Lesenswert?

Hier das C File.
Mehr Files habe ich nicht.

von Frank (Gast)


Lesenswert?

Hopsa, hab meinen Fehler scanf(,&...)

mein fehler

von Frank (Gast)


Lesenswert?

Das war sowieso ein blödsinn was ich da gemacht habe..

von Frank (Gast)


Lesenswert?

und zwar ein vollkommender blödsinn, danke trotzdem!!

von g457 (Gast)


Lesenswert?

1
$ gcc -o main main.c 2>&1 | head -n 5
2
main.c:1:1: error: stray ‘\377’ in program
3
main.c:1:1: error: stray ‘\376’ in program
4
main.c:1:1: error: stray ‘#’ in program
5
main.c:1:4: warning: null character(s) ignored [enabled by default]
6
main.c:1:6: warning: null character(s) ignored [enabled by default]
7
8
$ file main.c 
9
main.c: C source, Little-endian UTF-16 Unicode text, with CRLF, LF line terminators
10
11
$ gcc -finput-charset=utf16 -o main main.c
12
main.c:1:19: error: failure to convert utf16 to UTF-8
13
main.c: In function ‘main’:
14
main.c:4:2: warning: incompatible implicit declaration of built-in function ‘printf’ [enabled by default]
15
main.c:5:43: warning: incompatible implicit declaration of built-in function ‘scanf’ [enabled by default]
16
17
$ echo da iss was am encoding kaputt >/dev/null
18
19
$ ghex main.c 
20
21
$ iconv -f utf16 -t utf8 -o main-utf8.c main.c 
22
23
$ file main-utf8.c 
24
main-utf8.c: C source, ASCII text, with CRLF, LF line terminators
25
26
$ gcc -o main main-utf8.c
27
28
$ file main
29
main: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0x48a4f97d8e07b1e2a06a2bd1dcf88be6d887f033, not stripped

..nimm einen anständigen Editor und gib ggf. das input-charset mit an.

von Frank (Gast)


Lesenswert?

g457 schrieb:
> ggf. das input-charset mit an.

Ich kenne das leider nicht.
Hab Notepad++ probiert, aber immer noch den selben Fehler.
Gibt es eine Möglichkeit ohne dieses char Dings reinzugeben?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Frank schrieb:
> Hab Notepad++ probiert, aber immer noch den selben Fehler.

Dann lad den Text in das windows-eigene primitive Notepad und ruf die 
Funktion "Speichern unter" auf -- neben einem Dateinamen kannst Du dort 
auch die Codierung einstellen (ANSI, Unicode, Unicode Big Endian und 
UTF-8), hier ANSI auswählen.

von g457 (Gast)


Lesenswert?

(streiche 'input-charset', setzte 'Ausgabe-Charset' - ich bekommt gcc 
nicht zuverlässig mit utf16 zum laufen. Vielleicht weiss Gugl da noch 
was dazu).

> Gibt es eine Möglichkeit ohne dieses char Dings reinzugeben?

Theoretisch kann man Notpad++ das Ausgabe-Charset angeben. Allerdings 
nutzte ich das nie (unter Windows (fast) nur ConTEXT), ich kann Dir also 
nicht zuverlässig sagen, wo - laut Gugl irgendwo(tm) in den Preferences 
als 'utf8 ohne BOM'.

von Frank (Gast)


Lesenswert?

Funktioniert alles DANKE!

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Man kann dem GCC durchaus auch ein UTF-16-File hinsetzen:
1
j@remi 881% gcc -finput-charset=utf-16 -o prog main.c 
2
main.c:1:19: error: failure to convert utf-16 to UTF-8
3
main.c: In function 'main':
4
main.c:4:2: warning: incompatible implicit declaration of built-in function 'printf' [enabled by default]
5
main.c:5:43: warning: incompatible implicit declaration of built-in function 'scanf' [enabled by default]
6
main.c:5:2: warning: format '%ld' expects a matching 'long int *' argument [-Wformat]
7
main.c:5:2: warning: format '%ld' expects argument of type 'long int', but argument 2 has type 'int' [-Wformat]

Allerdings ist mir sein "failure to convert" gerade nicht klar.  Laut
Manual sollte die Konvertierung durch das iconv des Betriebssystems
abgedeckt werden; diese funktioniert jedoch, im Gegensatz zu GCCs
Fehlermeldung.

von g457 (Gast)


Lesenswert?

> Man kann dem GCC durchaus auch ein UTF-16-File hinsetzen:

Die (fast) selben Fehlermeldungen hatte ich oben [0] auch. Und mit iconv 
gings dann (latürnich) (ebenfalls [0]). Auf einem debian/testing/amd64. 
Also doch lieber bei utf8 bleiben :-)

Nix für ungut.

[0] mein Posting von 26.03.2013 22:14

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

g457 schrieb:
> Die (fast) selben Fehlermeldungen hatte ich oben [0] auch.

Sorry, hatte ich dann wohl doch überlesen.

Ist nur nicht klar, warum er da einen Fehler spuckt, wenn das iconv
selbst es dann doch kann.

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.