Question

Ceci est la ligne de code:

bool cpfs_utimens(struct Cpfs *, char const *path, struct timespec const[2]);

attelle 3.1.2 Exécution génère cet avertissement:

cpfs.h:21:74: Function parameter times declared as manifest array (size
                 constant is meaningless)
  A formal parameter is declared as an array with size.  The size of the array
  is ignored in this context, since the array formal parameter is treated as a
  pointer. (Use -fixedformalarray to inhibit warning)

Nommer le paramètre ne fait aucune différence.

Était-ce utile?

La solution

Cela signifie que lorsque vous déclarez le paramètre struct timespec const[2], le 2 entre le [ et ] n'est pas nécessaire. Changer votre code:

bool cpfs_utimens(struct Cpfs *, char const *path, struct timespec const[]);

En C / C ++, vous ne pouvez pas demander un tableau d'une certaine taille comme paramètre, car le tableau est traité comme un pointeur et pointeurs n'ont pas la taille.

Autres conseils

En C99 (depuis que vous utilisez bool) vous avez la possibilité d'exiger une longueur minimale d'un tableau de paramètres en ajoutant static comme ceci

bool cpfs_utimens(struct Cpfs *, char const *path, struct timespec const[static 2]);

la signature (s'il y a une telle chose en C) est toujours celle d'un paramètre de pointeur, la pensée.

(Et je ne connais pas de compilateur existant qui fait quelque chose de sensé de cette information, mais.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top