Lysander
Anmeldungsdatum: 30. Juli 2008
Beiträge: 2669
Wohnort: Hamburg
|
Zechpreller schrieb: Und meine eigenen Seiten da auch zu erstellen also mich in html & php einzuarbeiten.
Wobei Du da die Finger von PHP lassen solltest - wenn Du eh schon mal Python angefangen hast zu lernen, dann nutze das später auch fürs Web 😉
Aber das gehört ja weniger in diesen Thread ☺
Kommt immer drauf an ☺ Viel Erfolg noch! PS: CUnit und Check scheinen zwei gute Unittest-Frameworks für C zu sein. Erhöht jetzt natürlich ein wenig den Lern-Overhead, kann aber sehr nützlich für Deine Entwicklung sein, da Du die Funktionen einzeln automatisiert testen lassen kannst ☺
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17548
Wohnort: Berlin
|
Schau mal, ob
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 |
void errase_upstairs (int col, int row, int length, double* matrix[], double* zw_sp)
{
for (int i = 1; i < length ; i++)
{
col = i;
row = col;
for (int j = 0; j < col ; j++)
{
row = row-1;
calc_add_array (col, row, length, matrix, zw_sp);
}
}
}
void array_out (int length, double** matrix)
{
for (int i = 0; i < length ; i++)
{
printf ("\n");
for (int j = 0; j < length + 1 ; j++)
{
printf ("%f", matrix [i][j]);
printf ("\t");
}
}
}
|
nicht besser lesbar ist als die Version mit i_switch_spalte und i_errase_spalte usw. Whitespace ist auch dafür da, dass ein Humanoider den Code leichter in Token zerlegen kann. Viele sparen damit noch so, als würden die Bits per 200 Baud übertragen. Und:
In main steht in Zeile 15:
Bis Zeile 240 passiert nichts damit - nur Funktionen werden deklariert, die wenn, dann Spalte überschreiben. Erst in Zeile 240 findet sich ein:
Tja. Es gibt dann einen auskommentierten Aufruf check..., dem Spalte übergeben wird, und dann (Zeile 265ff.):
| errase_downstairs(Spalte, Zeile, length);
Zeile = 0;
Spalte = 0;
errase_upstairs(Spalte, Zeile, length);
|
Spalte ist hier immer noch nicht in 265 geändert worden aber in 267 wird es wieder auf 0 gesetzt, als hätte jemand den Wert zwischenzeitlich geändert. Komisch, dass der Wert überall 0 ist - wozu dann eine Variable? Sehen wir uns so eine Verwendung in der Funktion an (lesbarer gestaltet):
1
2
3
4
5
6
7
8
9
10
11
12
13 | void errase_upstairs (int Spalte, int Zeile, int length)
{
for (int i = 1; i < length ; i++)
{
Spalte = i;
Zeile = Spalte;
for (j = 0; j < Spalte ; j++)
{
Zeile = Zeile - 1;
calc_add_array (Spalte, Zeile, length);
}
}
}
|
Spalte wird hier übergeben (wir erinnern uns, mit Wert 0 jedesmal) und in der 2. Codezeile gleich mit i überschrieben, bevor irgendein Parameter ausgewertet wurde. D.h. wir geben den Wert rein, um innen einen Namen zu haben. Der Parameter ist völlig überflüssig.
1
2
3
4
5
6
7
8
9
10
11
12
13 | void errase_upstairs (int length)
{
for (int i = 1; i < length ; i++)
{
int Spalte = i;
int Zeile = Spalte;
for (j = 0; j < Spalte ; j++)
{
Zeile -= 1;
calc_add_array (Spalte, Zeile, length);
}
}
}
|
Mit Zeile verhält es sich genauso. Falls was sinnvolles reingereicht wird - es wird ignoriert. Die erste Verwendung ist immer eine Zuweisung, der Wert verloren. Es müsste also eine lokale Variable sein, die die Abhängigkeit des Codes von Außen vermindert, also sehr willkommen ist. Mit Spalte und i hat man noch eine überflüssige Variable die eliminiert gehört.
1
2
3
4
5
6
7
8
9
10
11
12 | void errase_upstairs (int length)
{
for (int i = 1; i < length ; i++)
{
int zeile = i;
for (j = 0; j < i; j++)
{
zeile -= 1;
calc_add_array (i, zeile, length);
}
}
}
|
|
Zechpreller
(Themenstarter)
Anmeldungsdatum: 27. Dezember 2012
Beiträge: Zähle...
|
Hey also ich habe nun meinen Code überarbeitet, es hat etwas gedauert aber da sind einige Dinge die ich nicht ganz verstehe, deshalb habe ich das Thema nochmal als ungelöst eingetragen. Würde mich freuen wenn ihr einen kurzen Blick darauf werfen könntet. Erstmal die main.c Datei 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 | /*
* Gauß_Algorithmus.c
*
* Created on: Aug 12, 2014
* Author: zechpreller
*/
#include "gaus.h"
int main()
{
printf("\nSie haben das Programm zur Durchführung des Gaußschen Algorithmus gewählt.");
printf("\nDie Koeffizienten werden von links nach rechts eingelesen.");
printf("\nWobei die jeweilige Spalte die Variablennummer wiedergibt\n\n");
int i_hor = 0;
int i_ver = 0;
int length;
int col = 0;
int row = 0;
double result_array[length];
printf("\nBitte geben sie die Anzahl der zu berechnenden Variablen an\n");
fflush(stdout);
scanf("%d",&length);
double lin_var[length][length+1];
void array_out(int length)
{
for(int i = 0; i < length ; i++)
{
printf("\n");
for(int j = 0; j < length+1 ; j++)
{
printf("%f", lin_var[i][j]);
printf("\t");
}
}
}
//***********************************************************************************//
//Einlesen des Linearen Gleichungssystems
//***********************************************************************************//
read_lin_var(length, lin_var);
//***********************************************************************************//
//Erste Prüfung auf Lösbarkeit des Systems
//***********************************************************************************//
check_array_before_inverted (length, lin_var);
check_array_spalten (length, lin_var);
//***********************************************************************************//
//Einlesen der Koeffizienten beendet
//Beginn der Berechnung
//***********************************************************************************//
int i_cancel = 0;
int cancel = 0;
for (; i_cancel < length ; i_cancel++)
{
if (lin_var[i_cancel][i_cancel] == 0)
{
cancel = 1;
}
}
if (cancel == 0)
{
errase_downstairs(col, row, length, lin_var);
row = 0;
errase_upstairs(col, row, length, lin_var);
printf("\nDas umgeformte Array zur Berechnung der Variablen\n");
array_out(length);
//***********************************************************************************//
//Berechnen und ausgeben der Variablen-Werte
//***********************************************************************************//
printf("\n\nDas result_array \n\n");
int i_out_hor_result = 0;
int i_result_array = 0;
for (; i_result_array < length ; i_result_array++)
{
result_array[i_result_array] = lin_var[i_result_array][length]/lin_var[i_result_array][i_result_array];
}
for(; i_out_hor_result < length ; i_out_hor_result++)
{
printf("Die %i. Variable ist",i_out_hor_result+1);
printf(" %f", result_array[i_out_hor_result]);
printf("\n");
}
}
if (cancel == 1)
{
printf("\n\nGleichungssystem nicht lösbar!\n");
}
return(0);
}
|
Anschließen die Datei in der ich die Deklarationen gemacht habe. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187 | #include "gaus.h"
double calc_mult_var(int col, int row,int length, double lin_var[][length+1])
{
double calc_mult_var = lin_var[row][col]/lin_var[col][col]*(-1);
return(calc_mult_var);
}
void calc_add_array(int col,int row,int length, double lin_var[][length+1])
{
double zw_sp[length+1];
double mult_var = 0;
mult_var = calc_mult_var(col,row, length, lin_var);
for (int i = 0; i < length+1; i++)
{
zw_sp[i] = mult_var*lin_var[col][i];
}
for (int j = 0; j < length+1; j++)
{
lin_var[row][j] = lin_var[row][j]+zw_sp[j];
}
}
void swap_lines(int row1, int row2,int length,double lin_var[][length+1])
{
double swap_matrix[length+1];
for(int i = 0; i < length+1; i++)
{
swap_matrix[i] = lin_var[row1][i];
lin_var[row1][i] = lin_var[row2][i];
lin_var[row2][i] = swap_matrix[i];
}
printf("\nDie %i. Zeile wurde mit der %i. Zeile getauscht.\n",row1+1, row2+1);
}
void swap_spalte(int col1, int col2, int length, double lin_var[][length+1])
{
double swap_matrix[length];
for (int i = 0; i < length; i++)
{
swap_matrix[i] = lin_var[i][col1];
lin_var[i][col1] = lin_var[i][col2];
lin_var[i][col2] = swap_matrix[i];
}
printf("\nDie %i. Spalte wurde mit der %i. Spalte getauscht.\n",col1+1,col2+1);
}
int check_array_spalten (int length, double lin_var[][length+1])
{
int j = 0;
int switched_spalte = 0;
for (int i = 0;i < length; i++)
{
if (lin_var[i][i] == 0)
{
j = i+1;
for (;j< length; j++)
{
if (lin_var[j][i] != 0 && lin_var[i][j] != 0 && lin_var[i][i] == 0 )
swap_spalte(i, j, length, lin_var);
{
switched_spalte = 1;
}
}
}
}
return (switched_spalte);
}
int check_array_before (int col,int row,int length, double lin_var[][length+1])
{
int j = 0;
int return_value = 0;
for (int i = row; i < length; i++)
{
if (lin_var[i][i] == 0)
{
j = i+1;
for (;j < length ; j++ )
{
if (lin_var[j][i] != 0 && lin_var[i][j])
{
swap_lines(i, j, length, lin_var);
return_value = 1;
}
}
}
else
{
}
}
return(return_value);
}
void check_array_before_inverted (int length, double lin_var[][length+1])
{
int j = 0;
for (int i = length; i > 0; i--)
{
if (lin_var[i][i] == 0)
{
j = i-1;
for (;j > 0 ; j-- )
{
if (lin_var[j][i] != 0 && lin_var[i][j])
{
swap_lines(i, j, length, lin_var);
}
}
}
else
{
}
}
}
void errase_downstairs (int col,int row,int length, double lin_var[][length+1])
{
int j = 0;
int switched_line = 0;
for (int i = 0;i < length-1 ; i++)
{
switched_line = check_array_before (0, 0, length, lin_var);
switched_line = check_array_spalten (length, lin_var);
col = i;
row = col;
j = col;
if (switched_line == 1)
{
i = 0;
j = 0;
row = 0;
col = 0;
}
else
{
for (j = 0;j < length ; j++)
{
row = row+1;
calc_add_array(col, row, length, lin_var);
}
}
}
}
void errase_upstairs (int col,int row,int length,double lin_var[][length+1])
{
for (int i = 1;i < length ; i++)
{
col = i;
row = col;
for (int j = 0;j < col ; j++)
{
row = row-1;
calc_add_array(col, row, length, lin_var);
}
}
}
void read_lin_var(int length, double lin_var[][length+1])
{
for (int i = 0; i < length ; i++)
{
printf("\n\nSie befinden sich in der %i. Zeile\n\n\n",i+1);
for (int j = 0; j < length+1 ; j++)
{
printf("Bitte geben Sie den %i. Koeffizienten ein\t",j+1);
fflush(stdout);
scanf("%lf",&lin_var[i][j]);
}
}
}
|
Zu guter letzt noch die Headerdatei. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | #ifndef GAUS_H_INCLUDED
#define GAUS_H_INCLUDED
#include <stdio.h>
#include <stdlib.h>
double calc_mult_var(int col, int row,int length, double lin_var[][length+1]);
void calc_add_array(int col,int row,int length, double lin_var[][length+1]);
void swap_lines(int row1, int row2,int length,double lin_var[][length+1]);
void swap_spalte(int col1, int col2, int length, double lin_var[][length+1]);
int check_array_spalten (int length, double lin_var[][length+1]);
int check_array_before (int col,int row,int length, double lin_var[][length+1]);
void check_array_before_inverted (int length, double lin_var[][length+1]);
void errase_downstairs (int col,int row,int length, double lin_var[][length+1]);
void errase_upstairs (int col,int row,int length,double lin_var[][length+1]);
//void array_out(int length, double lin_var[][length+1]);
void read_lin_var(int length, double lin_var[][length+1]);
#endif // GAUS_H_INCLUDED
|
Ein paar Einrückungen sind noch nicht sauber das muss ich noch machen. Was mich sehr stutzig macht ist dass die folgenden Variablen keine Funktion mehr haben und auch vom Debugger als "unused Variable" gemeldet werden, wenn ich nun jedoch diese 2 Deklarationen herauslösche stürzt das Programm vor dem Einlesen des Gleichungssystems ab? | int i_hor = 0;
int i_ver = 0;
|
Auch wenn ich die folgende Funktion wie den Rest auslagern will stürzt das Programm auch wieder vor dem Einlesen des Gleichungssystems ab.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | void array_out(int length)
{
for(int i = 0; i < length ; i++)
{
printf("\n");
for(int j = 0; j < length+1 ; j++)
{
printf("%f", lin_var[i][j]);
printf("\t");
}
}
}
|
Zuletzt hat auch die Funktionsweise gelitten, und zwar ist ein Gleichungssystem nicht lösbar stürzt das Programm ebenfalls ab.
Da muss ich jedoch hinzufügen dass ich mich damit noch nicht ausgiebig beschäftigt habe und jetzt erst Schluss für heute mache, ansonsten springt mir meine Freundin sowieso noch an den Hals.^^ Nochmal danke an euch zwei hab heut viel gelernt und mein Code wirkt auch viel sauberer und übersichtlicher und ich hab soviele nutzlose Variablen hinausgeworfen
was ich super finde.
Auch mit CUnit hab ich schon etwas herumgespielt und das sieht wirklich schick aus.
Programmieren ist wirklich eine Sache der Übung. In diesem gute Nacht bis morgen ☺
|
Dee
Anmeldungsdatum: 9. Februar 2006
Beiträge: 20087
Wohnort: Schwabenländle
|
Noch ein Formatierungstipp: Nutze entweder Leerzeichen zum Einrücken oder Spaces, nicht beides. Grund ist, dass die Tabbreite bei jedem Editor anders eingestellt sein kann. Leerzeichen sind immer gleich breit. Deswegen ist Dein Code auch immer noch sehr seltsam/falsch eingerückt.
wenn ich nun jedoch diese 2 Deklarationen herauslösche stürzt das Programm vor dem Einlesen des Gleichungssystems ab?
Hast du schon einmal mit Debug-Info kompiliert und debuggt. Wo stürzt er denn ab? $ gcc -std=c99 -g main.c func.c -o gaus
$ gdb ./gaus
(gdb) run Normalerweise haben solche Abstürze damit zu tun, dass sich das Speicherlayout ändert (Du hast zwei Integer weniger im Speicher) und Du irgendwo im Speicher schreibst/liest, wo Du nicht schreiben/lesen solltest. Gruß Dee
|
Lysander
Anmeldungsdatum: 30. Juli 2008
Beiträge: 2669
Wohnort: Hamburg
|
Dee schrieb: Noch ein Formatierungstipp: Nutze entweder Leerzeichen zum Einrücken oder Spaces, nicht beides.
Hu? Was denn nun 😈 @Zechpreller: Du kannst auch Formatierungstools nutzen, wie etwa Artistic Style.
|
frostschutz
Anmeldungsdatum: 18. November 2010
Beiträge: 7651
|
|
Zechpreller
(Themenstarter)
Anmeldungsdatum: 27. Dezember 2012
Beiträge: 39
|
frostschutz schrieb: benutzt du gcc -Wall?
Nein das sagt mir jetzt auch gar nichts und Google spuckt dazu auch nicht viel aus was ist das eigentlich? Und zwecks den Einrückungen Leerzeichen mögen zwar wie du gesagt hast überall gleich lang und das mit dem Editor ist wirklich blöd wenn man mal die Plattform wechselt, jedoch denke ich bleibe ich bei space, da diese sowieso automatisch in der IDE eingefügt werden sobald ich eine geschweifte Klammer öffne. Ich werd mich mal dran machen die Fehler rauszuholen und melde mich dann wieder! Danke für eure Tipps! EDIT: Ha Fehler gefunden! ich hatte eine Endlos-Schleife drin! Zur kurzen Erläuterung, der Gauß-Algorithmus lebt ja vom Zeilen- & Spaltenvertauschen und ich hab es so einprogrammiert dass falls eine Spalte oder Zeile getauscht wurden folgende Variablen wieder auf 0 gesetzt und alles begann von vorn. | i = 0;
j = 0;
row = 0;
col = 0;
|
Das geschah in der Funktion:
| int errase_downstairs (int col,int row,int length, double lin_var[][length+1])
|
Also aus meiner Sicht macht das nichts wenn ich die das auf 0 setzen der Variablen weglasse. Mit der Funktionsweise bin ich sehr zufrieden, jetzt fehlt nur noch das Format. Es macht mich immernoch stutzig wieso das Programm vor dem Einlesen der "length" Variable abstürzt wenn ich eine Funktion wie "array_out" in die Datei für die Deklarationen verlager..?
|
senden9
Anmeldungsdatum: 8. Februar 2010
Beiträge: 965
Wohnort: Österreich
|
Google sagt dir deshalb nicht weil du Google mittels "gcc -Wall" mitteilst das es gcc ohne Wall suchen soll. Such mal nach "gcc Wall". Damit gibt dir GCC Warnungen zu deinem Code aus. Ich zitiere mal die man page:
-Wall
This enables all the warnings about constructions that some users consider questionable, and that are easy to avoid (or modify to prevent the warning), even in conjunction with macros. This also enables some language-
specific warnings described in C++ Dialect Options and Objective-C and Objective-C++ Dialect Options.
-Wall turns on the following warning flags:
-Waddress -Warray-bounds (only with -O2) -Wc++11-compat -Wchar-subscripts -Wenum-compare (in C/ObjC; this is on by default in C++) -Wimplicit-int (C and Objective-C only) -Wimplicit-function-declaration (C and Objective-C
only) -Wcomment -Wformat -Wmain (only for C/ObjC and unless -ffreestanding) -Wmaybe-uninitialized -Wmissing-braces (only for C/ObjC) -Wnonnull -Wopenmp-simd -Wparentheses -Wpointer-sign -Wreorder -Wreturn-type
-Wsequence-point -Wsign-compare (only in C++) -Wstrict-aliasing -Wstrict-overflow=1 -Wswitch -Wtrigraphs -Wuninitialized -Wunknown-pragmas -Wunused-function -Wunused-label -Wunused-value -Wunused-variable
-Wvolatile-register-var
Note that some warning flags are not implied by -Wall. Some of them warn about constructions that users generally do not consider questionable, but which occasionally you might wish to check for; others warn about
constructions that are necessary or hard to avoid in some cases, and there is no simple way to modify the code to suppress the warning. Some of them are enabled by -Wextra but many of them must be enabled individually.
Sollten dir das das noch nicht an Warnungen reichen kannst du noch -Wextra dazu schalten. Ich zitiere nochmal die man page:
-Wextra
This enables some extra warning flags that are not enabled by -Wall. (This option used to be called -W. The older name is still supported, but the newer name is more descriptive.)
-Wclobbered -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wmissing-parameter-type (C only) -Wold-style-declaration (C only) -Woverride-init -Wsign-compare -Wtype-limits -Wuninitialized -Wunused-parameter
(only with -Wunused or -Wall) -Wunused-but-set-parameter (only with -Wunused or -Wall)
The option -Wextra also prints warning messages for the following cases:
· A pointer is compared against integer zero with <, <=, >, or >=.
· (C++ only) An enumerator and a non-enumerator both appear in a conditional expression.
· (C++ only) Ambiguous virtual bases.
· (C++ only) Subscripting an array that has been declared register.
· (C++ only) Taking the address of a variable that has been declared register.
· (C++ only) A base class is not initialized in a derived class's copy constructor.
|
Zechpreller
(Themenstarter)
Anmeldungsdatum: 27. Dezember 2012
Beiträge: 39
|
senden9 schrieb: Google sagt dir deshalb nicht weil du Google mittels "gcc -Wall" mitteilst das es gcc ohne Wall suchen soll. Such mal nach "gcc Wall". Damit gibt dir GCC Warnungen zu deinem Code aus. Ich zitiere mal die man page:
-Wall
This enables all the warnings about constructions that some users consider questionable, and that are easy to avoid (or modify to prevent the warning), even in conjunction with macros. This also enables some language-
specific warnings described in C++ Dialect Options and Objective-C and Objective-C++ Dialect Options.
-Wall turns on the following warning flags:
-Waddress -Warray-bounds (only with -O2) -Wc++11-compat -Wchar-subscripts -Wenum-compare (in C/ObjC; this is on by default in C++) -Wimplicit-int (C and Objective-C only) -Wimplicit-function-declaration (C and Objective-C
only) -Wcomment -Wformat -Wmain (only for C/ObjC and unless -ffreestanding) -Wmaybe-uninitialized -Wmissing-braces (only for C/ObjC) -Wnonnull -Wopenmp-simd -Wparentheses -Wpointer-sign -Wreorder -Wreturn-type
-Wsequence-point -Wsign-compare (only in C++) -Wstrict-aliasing -Wstrict-overflow=1 -Wswitch -Wtrigraphs -Wuninitialized -Wunknown-pragmas -Wunused-function -Wunused-label -Wunused-value -Wunused-variable
-Wvolatile-register-var
Note that some warning flags are not implied by -Wall. Some of them warn about constructions that users generally do not consider questionable, but which occasionally you might wish to check for; others warn about
constructions that are necessary or hard to avoid in some cases, and there is no simple way to modify the code to suppress the warning. Some of them are enabled by -Wextra but many of them must be enabled individually.
Ich verweise auf den ersten Eintrag, unter Ubuntu hab ich das ganze Thema super zum laufen gebracht es ist auch angenehmer unter Linux zu programmieren was ich feststelle.
Mein Betreuer will das Programm jedoch unter Windows haben da er kein Linux verwendet. Ich verwende als Compiler ja auch den MinGW der das Gegenstück von GCC unter Windows ist.
|
senden9
Anmeldungsdatum: 8. Februar 2010
Beiträge: 965
Wohnort: Österreich
|
Ich glaube (weiß es also nicht) das -Wall & -Wextra auch unter MinGW unterstützt werden.
|
Zechpreller
(Themenstarter)
Anmeldungsdatum: 27. Dezember 2012
Beiträge: 39
|
Aber die manpage gibt es ja in diesem Sinne unter Windows nicht, gibts im cmd Fenster auch so etwas wie eine Manpage? Also sind das 2 Flags im Compiler die ich setzen sollte, damit ich besser die Warnungen auslesen kann. Ich werde mal den Code unter Linux nochmal bearbeiten und dann diese 2 Flags setzen.
(Zum Glück gibts ein Dual-Boot System)
Danke für den Tipp!
|
senden9
Anmeldungsdatum: 8. Februar 2010
Beiträge: 965
Wohnort: Österreich
|
Zechpreller schrieb: Aber die manpage gibt es ja in diesem Sinne unter Windows nicht, gibts im cmd Fenster auch so etwas wie eine Manpage? [...]
Ja, stimmt. Darauf hab ich vergessen. Ich vermute das aber trotzdem irgendwie eine Anleitung mitgeliefert wird.
|
Zechpreller
(Themenstarter)
Anmeldungsdatum: 27. Dezember 2012
Beiträge: 39
|
Ich hätte das jetzt über die IDE gemacht da werden schon einige Compiler Flags angezeigt. Aber das -Wall Flag tauchte nicht auf. Ich schätze mal dass es einfach einen anderen Namen hat ich werd mir wohl mal die documentation zu MinGW reinpfeifen müssen^^
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12801
|
Zechpreller schrieb: Aber die manpage gibt es ja in diesem Sinne unter Windows nicht, gibts im cmd Fenster auch so etwas wie eine Manpage? Also sind das 2 Flags im Compiler die ich setzen sollte, damit ich besser die Warnungen auslesen kann. Ich werde mal den Code unter Linux nochmal bearbeiten und dann diese 2 Flags setzen.
(Zum Glück gibts ein Dual-Boot System)
Danke für den Tipp!
Mach es Dir doch einfach und nutz http://www.cygwin.com/. Da gibt es auch einen gcc und der hat sogar eine Manpage: $ man gcc | fgrep -iA 5 -e -wall
...
-Wall
Turns on all optional warnings which are desirable for normal code. At present this is -Wcomment, -Wtrigraphs,
-Wmultichar and a warning about integer promotion causing a change of sign in "#if" expressions. Note that many of
the preprocessor's warnings are on by default and have no options to control them.
... Den gdb gibt's da auch und mittlerweile gibt es auch eine 64-Bit-Version von Cygwin. Ciao robert
|
Dee
Anmeldungsdatum: 9. Februar 2006
Beiträge: 20087
Wohnort: Schwabenländle
|
Nutze entweder Leerzeichen zum Einrücken oder Spaces, nicht beides.
Hu? Was denn nun
Da war mein Gehirn langsamer als die Finger ... Ich meinte natürlich Tabs oder Spaces. ☺ Gruß Dee
|