2009-10-18 8 views
0

J'ai une fonction comme ceci:Débogueur Visual Studio ne peut pas voir les tableaux après avoir été passé à des fonctions

MyFunction(double matrix[4][4]) 
{/*do stuff*/} 

J'appelle cela d'une fonction externe (la fonction otuer est une fonction de membre d'un classe, en cas qui compte):

OuterFunction() 
{ 
double[4][4] x; 
initialize(x); //this function puts the data I want in the matrix 
MyFunction(x); 
} 

J'essaie de déboguer ce progaram en utilisant le débogueur Visual studio. Le problème est que quand je regarde les locaux pour la fonction OuterFunction, je peux voir tous les éléments de la matrice, mais quand je regarde les locaux pour MyFunction, je ne peux voir que la première rangée du tableau, et il dit que c'est une matrice [4] * plutôt qu'une matrice [4] [4]. Cela arrive même quand je ne fais que passer un tableau unidimensionnel - je passe dans une matrice [4], alors le débogueur l'identifie comme une matrice * et me laisse seulement voir le premier élément du tableau. Est-il possible de résoudre ce problème afin que je puisse voir tout le tableau dans le débogueur?

Répondre

0

Il peut être résolu en utilisant un vecteur de vecteurs, ou en ayant votre variable matricielle dans les fenêtres de surveillance comme "matrice, 4". Le ", 4" est un format qui indique au débogueur 4 éléments.

0

Lorsque vous transmettez la matrice [] [] à la fonction, vous ne passez en fait qu'une matrice de pointeur **. Le code C de la fonction n'a aucune idée de la taille de la matrice et donc du débogueur.

Pour utiliser la fonction ou général marticies vous devrez passer les dimensions à la fonction.

Vous pouvez voir les valeurs ultérieures de say matrix * dans le débogueur en demandant * (matrix + n).

Mais vous utilisez C++ pas C tellement plus facile d'utiliser des choses C++ comme std :: vector (Si vous faites C++, vous déclarez très rarement les tableaux à passer)

Questions connexes