IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Passage de tableau de structure à une fonction


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 71
    Points : 83
    Points
    83
    Par défaut Passage de tableau de structure à une fonction
    Bonjour à tous !

    Comme l'indique le titre de ce topic, j'ai un soucis au passage d'un tableau de structure à une fonction. En effet, je me retrouve avec seulement la premiere structure de mon tableau.

    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
     
    struct CUSTOMVERTEX
    {
        FLOAT x, y, z, rhw; // The transformed position for the vertex
        DWORD color;        // The vertex color
    };
     
    InitVB(CUSTOMVERTEX *initVertice)
    {
        ....
    };
     
    INT WINAPI wWinMain( HINSTANCE hInst, HINSTANCE, LPWSTR, INT )
    {
    	CUSTOMVERTEX Vertices[] =
    		{
    			{ 50.0f,  50.0f, 0.5f, 1.0f, 0xffff0000, }, // x, y, z, rhw, color
    			{ 250.0f, 50.0f, 0.5f, 1.0f, 0xff00ff00, },
    			{ 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00, },
    			{  50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, },
    		};
     
               if( SUCCEEDED(InitVB(Vertices) ) )
               {
                  ....
    	   }
    	}
    }
    Quand je regarde les valeurs de Vertice reçu par la fonction InitVB à l'aide du débuggueur je me retrouve avec seulement la première ligne de mon tableau et son "type" est de CUSTOMVERTEX* au lieu d'etre à CUSTOMVERTEX[4].

    Je passe donc de:

    Vertices[] =
    {
    { 50.0f, 50.0f, 0.5f, 1.0f, 0xffff0000, }
    { 250.0f, 50.0f, 0.5f, 1.0f, 0xff00ff00, },
    { 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00, },
    { 50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, },
    };

    à

    Vertices = 50.0f, 50.0f, 0.5f, 1.0f, 0xffff0000;

    Sans comprendre pourquoi ...

    Quelqu'un aurait une idée ?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Il aurait fallu donner une version compilable de ton code.

    En version compilable, ça marche bien :
    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
    #include <stdio.h>
     
    typedef struct
    {
        float  x, y, z, rhw;
        int color;
    } CUSTOMVERTEX;
     
    void InitVB(CUSTOMVERTEX *initVertice)
    {
    	int a;
    	for (a=0; a<4; a++)
    	{
    		printf("%f %f %f %f %x\n", initVertice[a].x,initVertice[a].y,initVertice[a].z,initVertice[a].rhw,initVertice[a].color);
    	}
    };
     
    int main(void)
    {
    	CUSTOMVERTEX Vertices[] =
    		{
    			{ 50.0f,  50.0f, 0.5f, 1.0f, 0xffff0000, },
    			{ 250.0f, 50.0f, 0.5f, 1.0f, 0xff00ff00, },
    			{ 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00, },
    			{  50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, },
    		};
     
    	InitVB(Vertices);
     
    	return 0;
    }
    ... à moins que j'ai mal compris ta question ?

    Par contre, j'ai vu un truc très douteux dans ton code. Ce genre de code, à ma connaissance, ne passe pas avec un compilateur C :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    struct CUSTOMVERTEX
    {
        FLOAT x, y, z, rhw;
        DWORD color;
    };
     
    InitVB(CUSTOMVERTEX *initVertice)
    {
        ....
    };
    ... si tu n'emploies pas de typedef.
    Donc, si ça compile chez toi, c'est que tu compiles en C++ et non en C. Un code en C doit être compilé avec un compilateur C.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 71
    Points : 83
    Points
    83
    Par défaut
    Merci pour ton aide, il s'averre effectivement que j'avais compilé avec un compilateur Cpp, mais je vais changer ca

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/06/2010, 10h58
  2. passage tableau 2 dimensions à une fonction
    Par zentaf dans le forum C++
    Réponses: 4
    Dernier message: 11/01/2010, 01h36
  3. Réponses: 6
    Dernier message: 28/12/2009, 16h45
  4. Comment passer un tableau de structure à une fonction
    Par mackla dans le forum Débuter
    Réponses: 12
    Dernier message: 01/06/2008, 17h21
  5. passage de tableau 2D a une fonction
    Par watashinoitadakimasu dans le forum C
    Réponses: 2
    Dernier message: 11/09/2003, 02h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo