erreur en ajoutant option -wall
Bonjour,
j'ai fais un petit programme pour comparer lesm anières de passer une variable, le programme fonctionne bien si je compile avec cette ligne :
Code:
g++ -o out main.cpp
Mais si je change par :
Code:
g++ -o -wall out main.cpp
J'ai vraiment beaucoup d'erreurs du genre :
Code:
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
| out: In function `_start':
/build/buildd/glibc-2.9/csu/../sysdeps/i386/elf/start.S:65: multiple definition of `_start'
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crt1.o:/build/buildd/glibc-2.9/csu/../sysdeps/i386/elf/start.S:65: first defined here
out:(.rodata+0x0): multiple definition of `_fp_hw'
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crt1.o:(.rodata+0x0): first defined here
out: In function `_fini':
/build/buildd/glibc-2.9/csu/../sysdeps/generic/initfini.c:109: multiple definition of `_fini'
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crti.o:/build/buildd/glibc-2.9/csu/../sysdeps/generic/initfini.c:109: first defined here
out:(.rodata+0x4): multiple definition of `_IO_stdin_used'
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crt1.o:(.rodata.cst4+0x0): first defined here
out: In function `__data_start':
(.data+0x0): multiple definition of `__data_start'
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crt1.o:(.data+0x0): first defined here
out: In function `__data_start':
(.data+0x4): multiple definition of `__dso_handle'
/usr/lib/gcc/i486-linux-gnu/4.3.3/crtbegin.o:(.data+0x0): first defined here
out: In function `_init':
/build/buildd/glibc-2.9/build-tree/i386-libc/csu/crti.S:15: multiple definition of `_init'
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crti.o:/build/buildd/glibc-2.9/build-tree/i386-libc/csu/crti.S:15: first defined here
/tmp/cccQWNZJ.o: In function `powc':
main.cpp:(.text+0x0): multiple definition of `powc'
out:(.text+0xb4): first defined here
/tmp/cccQWNZJ.o: In function `powref(int, int)':
main.cpp:(.text+0x70): multiple definition of `powref(int, int)'
out:(.text+0x124): first defined here
/tmp/cccQWNZJ.o: In function `powretour(int, int, long double&)':
main.cpp:(.text+0xde): multiple definition of `powretour(int, int, long double&)'
out:(.text+0x192): first defined here
/tmp/cccQWNZJ.o: In function `main':
main.cpp:(.text+0x1a0): multiple definition of `main'
out:(.text+0x254): first defined here
/usr/lib/gcc/i486-linux-gnu/4.3.3/crtend.o:(.dtors+0x0): multiple definition of `__DTOR_END__'
out:(.dtors+0x4): first defined here
/usr/bin/ld: warning: Cannot create .eh_frame_hdr section, --eh-frame-hdr ignored.
/usr/bin/ld: error in out(.eh_frame); no .eh_frame_hdr table will be created.
collect2: ld a retourné 1 code d'état d'exécution |
Pour info, voici mon fichier principal :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
extern "C" {
#include "exo1.c"
}
using namespace std;
#include "powcpp.cpp"
#include<iostream>
int main(){
int n,m;
long double res,res2,res3;
cout << "Entrez la valeur puis l'exposant :" << endl;
cin >> n;
cin >> m;
res = powc(n,m);
res2 = powref(n,m);
powretour(n,m,res3);
cout << "Resultat powc : " << res << endl << "Resultat powref : " <<
res2 <<endl << "Resultat powretour : " << res3 << endl;
return 0;
} |
et les deux autres
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| long double powc(int val, int exp) {
long double res;
double pas;
int i;
if (exp < 0){
pas = (double) 1/val;
exp = -exp;
} else {
pas = val;
}
res = 1;
for (i=0;i<exp;i++) {
res *= pas;
}
return res;
} |
Code:
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
| long double &powref(int val, int exp) {
static long double res;
double pas;
int i;
if (exp < 0){
pas = (double) 1/val;
exp = -exp;
} else {
pas = val;
}
res = 1;
for (i=0;i<exp;i++) {
res *= pas;
}
return res;
}
void powretour(int val, int exp,long double &result) {
double pas;
int i;
if (exp < 0){
pas = (double) 1/val;
exp = -exp;
} else {
pas = val;
}
result = 1;
for (i=0;i<exp;i++) {
result *= pas;
}
} |
Merci d'avance pour votre aide.