2010-09-23 4 views
0

Je dois utiliser ce code mais je reçois l'erreur suivante:erreur de taille inconnue

error c2036'Complex_Z 'unknown size

typedef struct Complex_Z{ 
double r, i; 
} ; 

void update_projection_zprimme(struct Complex_Z *X, struct Complex_Z *Y, struct Complex_Z *Z, 
    int numCols, int maxCols, int blockSize, struct Complex_Z *rwork, 
    struct primme_params *primme) { 

    int j; /* Loop variable */ 
    int count; 
    struct Complex_Z tpone = {+1.0e+00,+0.0e00}; 
    struct Complex_Z tzero = {+0.0e+00,+0.0e00}; 

    /* --------------------------------------------------------------------- */ 
    /* Zero the work array to prevent floating point traps during all-reduce */ 
    /* --------------------------------------------------------------------- */ 

    for (j = 0; j < maxCols*blockSize; j++) { 
     rwork[j] = tzero; //error c2036'Complex_Z 'unknown size 
    } 
+0

Fixez votre formatage. –

+0

Veuillez faire une question à l'objet de la question, et formatez votre code pour qu'il puisse être lu. – Darron

+4

Pourquoi les gens enterrent-ils si vite? Donnez une pause aux débutants. Il y a du code et un problème. – z5h

Répondre

0

Je soupçonne que ces morceaux de code proviennent de plus d'un fichier source, et votre boucle se produit dans un emplacement où la définition de Complex_Z n'est pas visible.

+0

maintenant je connais la raison de l'erreur J'ai cet avertissement \t avertissement C4627: '#include' complexe .h "': ignoré lors de la recherche de l'en-tête précompilé, il ne peut pas voir le fichier d'en-tête dans le code source warning –

+0

@basma: Déplace la ligne '#include" stdafx.h "' pour qu'elle soit la première des lignes '# include'. –

+0

Donc, j'ai la réponse la plus correcte ici (sans connaître l'environnement particulier, et les spécificités des en-têtes précompilés), mais je suis downvoted. – Darron

0

Parce que vous déclarez typedef struct Complex_Z {} qui est invalide 'C'

il s/b:

typedef struct { 
double r, i; 
} Complex_Z; 

puis référence struct Complex_Z

quand vous devriez référencez Complex_Z

par exemple :

struct Complex_Z tpone = {+1.0e+00,+0.0e00}; 
    struct Complex_Z tzero = {+0.0e+00,+0.0e00}; 

s/b

Complex_Z tpone = {+1.0e+00,+0.0e00}; 
    Complex_Z tzero = {+0.0e+00,+0.0e00}; 
+0

Ce n'est pas du C++ (mais vos commentaires sont précis pour C++ et inexacts pour C). –

+0

Fixé avec l'édition – KevinDTimm

1

Votre code:

typedef struct Complex_Z{ 
    double r, i; 
} ; 

déclare par hasard le type struct Complex_Z, mais ne donne pas le nom du typedef. Plus précisément, il ne fait pas Complex_Z dans un synonyme de struct Complex_Z.

Cependant, je ne vois pas où le code fait référence à seulement Complex_Z - bien que le message d'erreur signalé indique qu'il manquait probablement le struct. Comme le code est un fragment, je pense qu'il y a eu un changement entre le moment où le compilateur a fonctionné et le code qui nous a été affiché.