Il semble que g ++ ignore la différence de taille des tableaux lors du passage d'arrays en tant qu'arguments. C'est-à-dire, ce qui suit compile sans avertissements même avec -Wall
.Fonctions acceptant les types de tableaux C/C++
void getarray(int a[500])
{
a[0] = 1;
}
int main()
{
int aaa[100];
getarray(aaa);
}
Maintenant, je comprends le modèle sous-jacent de passer un pointeur et évidemment je pouvais définir la fonction que getarray(int *a)
. Je m'attendais, cependant, à ce que gcc émette au moins un avertissement quand j'ai spécifié les tailles de tableau explicitement.
Y a-t-il un moyen de contourner cette limitation? (I guest boost :: array est une solution mais j'ai tellement de vieux code utilisant un tableau de type c qui a été promu en C++ ...)
en double de: http://stackoverflow.com/questions/1328223/sizeof-array- passé-comme-paramètre –
@Richard: la réponse à cette question contient l'indice de celui-ci. La question est cependant différente. Celui-ci concerne la préservation du type. – xtofl