Bonjour à tous,
Je commence par définir le contexte. Dans le déroulement de ma mission, j'ai eu à améliorer et débugger un programme déjà relativement "costaud" (2 headers+2 fichiers sources contenant plein de fonctions chacun, enfin cela me paraît conséquent, je suis impressionnable)
Je suis parvenu à le faire tourner correctement. Maintenant l'enjeu actuel est de réussir à intégrer ce programme au sein d'un plus grand système. L'un des résultats qu'il renvoie est utilisé comme calcul intermédiaire.
Et là, j'obtiens quelques erreurs de compilation dans une fonction, non pas situées dans les nouveaux fichiers sources, mais dans les anciens, alors que c'est une fonction mineure qui n'est utilisée que dans le premier projet qui tourne "parfaitement" ou presque.
Je travaille sous VisualC++ 2008.
Alors maintenant, je précise les erreurs :
, que je colore en Bleu.error C2143: syntax error : missing ';' before 'constant'
, que je colore en Rouge.error C2109: subscript requires array or pointer type
Quand les deux erreurs concernent la même ligne de compilation, je colore en Vert.
Voici la fonction incriminée :
(En fait il n'y a pas de bleu, bon je laisse cette convention au cas où).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 double gamma1_FF0(double modip, double latitude_u, double longitude_u, double UT,int taille_coeff,double* tab_coeff) { int nq[dimensionFF0+1]; double c[nb_harmonicFF0+1]; double s[nb_harmonicFF0+1]; double x,s0,s1,s2,ss,s3; int i,j,k,index,L,np; int ligne; int colonne; int mi; double coeff[101]; double xsinx[14]; double sum; if(taille_coeff==988) { nq[0]=0;//rajout nq[1]=11; nq[2]=11; nq[3]=8; nq[4]=4; nq[5]=1; nq[6]=0; nq[7]=0; nq[8]=0; nq[9]=0; ligne=13; colonne=76; } if(taille_coeff==441) { nq[0]=0;//rajout nq[1]=6; nq[2]=7; nq[3]=5; nq[4]=2; nq[5]=1; nq[6]=0; nq[7]=0; ligne=9; colonne=49; } //conversion heure (0h&24h) en angle radians (-Pi&Pi) : UT->(15*UT-180)*Pi/180 x=PI*UT/12-PI; for(k=0;k<=nb_harmonicFF0;k++) { s[k]=sin(k*x); c[k]=cos(k*x); } coeff[0]=0;//rajout for (i=1;i<=colonne;i++) { mi=(i-1)*ligne; coeff[i]=tab_coeff[mi]; for (j=1;j<=nb_harmonicFF0;j++) { coeff[i]=coeff[i]+tab_coeff[mi+2*j-1]*s[j]+tab_coeff[mi+2*j]*c[j]; } } sum=coeff[1]; ss=sin(modip*PI/180); s3=ss; xsinx[0]=0;//rajout xsinx[1]=1; index=nq[1]; for(j=1;j<=index;j++) { if((fabs(ss))>=1E-30) { sum=sum+coeff[1+j]*ss; xsinx[j+1]=ss; ss=ss*s3; } else { xsinx[j+1]=0; } } if(fabs(ss)>=1E-30) { xsinx[nq[1]+2]=ss; } else { xsinx[nq[1]+2]=0; } np=nq[1]+1; ss=cos(latitude_u*PI/180); s3=ss; for(j=2;j<=dimensionFF0;j++) { s0=longitude_u*(j-1)*PI/180; s1=cos(s0); s2=sin(s0); index=nq[j]+1; for(L=1;L<=index;L++) { np=np+1; sum=sum+coeff[np]*xsinx[L]*ss*s1; np=np+1; sum=sum+coeff[np]*xsinx[L]*ss*s2; } ss=ss*s3; } return sum; }
Je ne comprends vraiment pas, étant donné qu'elle marchait correctement avant et que les ; sont bien placés comme il le faut, du moins je crois.
Quelqu'un a-t-il déjà vu une erreur apparaître dans les fichiers sources originels d'un programme lors de l'extension de celui-ci ? (sûrement je pense mais bon...)
Je vous remercie vivement par avance pour toute indication, j'avoue être dans le flou.
Bonne journée.
Partager