Je tente de lire les valeurs d'un tableau à deux dimensions et de les multiplier pour créer un nouveau tableau. Ce n'est pas entièrement important.Erreur de syntaxe avec accès au tableau de macro
J'ai créé une macro pour lire les valeurs au lieu d'une fonction pour être théoriquement plus efficace, mais j'ai une erreur de syntaxe que je ne peux pas comprendre. La ligne d'émission est
// compute and write the value for the result array
writearr(result, n, r, c, (READ(r, c, A*) * READ(c, r, A*)));
avec en-tête de la fonction
void newarr(int n, int* A, int* result)
La macro est
#define READ(a, b, arr) (arr[a][b])
et quand je tente de compiler ce je reçois
gcc -Wall -O2 -c -o placeholder.o placeholder.c
placeholder.c: In function âwritearrâ:
placeholder.c:26: error: expected expression before â[â token
make: *** [placeholder.o] Error 1
mais je ne peut pas tout à fait comprendre ce que le problème est.
«J'ai créé une macro pour lire les valeurs au lieu d'une fonction d'être théoriquement plus efficace » C'est où vous êtes allé mal. Pourquoi coderiez-vous pour des avantages théoriques? Vous devriez coder pour la propreté et l'élégance. Quand vous avez terminé *, vous pouvez profiler votre code, savoir où sont les parties lentes et les corriger. Deviner est sans valeur. – GManNickG
En outre, vous ne pouvez pas indexer en deux dimensions, juste le début et la taille. Vous avez également besoin d'une largeur pour effectuer l'arithmétique. Voir les commentaires sur la réponse de Vlad. – GManNickG