[C] Operand incorect .

Operand incorect . [C] - C - Programmation

Marsh Posté le 14-07-2008 à 15:33:58    

Bonjour a tous.
 
j'ai recuperer un patch pour OpenTTD.
 
mais voila, a la compilation, j'ai un erreur, sur un operateur qui serait incorrect.
 
http://img411.imageshack.us/img411/4649/clipboardpz8.jpg
 
voici les lignes presente dans le fichier :
 

Code :
  1. 377   data[i][j] += (data[i][j-k] == INVALID_DATAPOINT ? 0 : data[i][j-k]);
  2. 388   data[i][j] -= (data[i][j-1] == INVALID_DATAPOINT ? 0 : data[i][j-1]);


 
INVALID_DATAPOINT est déclarer en int64
 
D'apres l'erreur le ? il aime pas des masses, mais mes connaissances en C etant tres limité, je sais pas comment resourdre ce soucis.
j'ai demander de l'aide a l'auteur, mais lui non plus ne comprend pas, car il a reussi a compiler sans soucis.
 
si vous savez ce qui cloche, merci de votre aide.


Message édité par chico008 le 14-07-2008 à 15:36:31

---------------
Serveur HFR - OpenTTD
Reply

Marsh Posté le 14-07-2008 à 15:33:58   

Reply

Marsh Posté le 14-07-2008 à 15:48:56    

fais en sorte que 0 soit du même type que data[x][y]


Message édité par Taz le 14-07-2008 à 15:49:15
Reply

Marsh Posté le 14-07-2008 à 16:58:29    

euh, cad ?
je met un data[z][z] avec z égale à 0 ?


Message édité par chico008 le 14-07-2008 à 16:59:37

---------------
Serveur HFR - OpenTTD
Reply

Marsh Posté le 14-07-2008 à 17:42:55    

C'est un tableau de quel type data ? Sinon tu peux toujours essayer ça :
 

Code :
  1. if (data[i][j-k] != INVALID_DATAPOINT)
  2. {
  3.   data[i][j] += data[i][j-k];
  4. }
  5. if (data[i][j-1] != INVALID_DATAPOINT)
  6. {
  7.   data[i][j] -= data[i][j-1];
  8. }


---------------
dap.developpez.com
Reply

Marsh Posté le 14-07-2008 à 17:45:12    

Nan, il faut que les types des opérandes soient les mêmes dans ton instruction conditionnelle.
 
0 est de type "int" donc ta variable "data" doit être de type compatible (entier ou double, donc).
 
Bref, montre nous comment ta variable "data" est déclarée. Et si ce n'est pas un type atomique, rajoute la définition du type avec.

Reply

Marsh Posté le 14-07-2008 à 21:23:29    

OverflowSafeInt64 data[GRAPH_MAX_DATASETS][GRAPH_MAX_X_VALUES]
 
byte              color[GRAPH_MAX_DATASETS]
GRAPH_MAX_X_VALUES = 24
 
ca vous va ou pas ?


---------------
Serveur HFR - OpenTTD
Reply

Marsh Posté le 14-07-2008 à 22:07:40    

Hmm, si le type "OverflowSafeInt64" est dérivé d'un entier, il ne devrait pas raler. Au pire rajoute remplace le 0 par 0LL (zéro, elle, elle), mais normallement la promotion implicite de type devrait s'en charger.
 
Peux tu encore dire comment est déclaré "OverflowSafeInt64" ?

Reply

Marsh Posté le 14-07-2008 à 22:34:34    

euh, alors la, aucune idée.


---------------
Serveur HFR - OpenTTD
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed