Passage d'une structure void en parametre d'une fonction

Bonjour,
Est-il possible de passer en paramètre d"une fonction une structure void ?
exemple, j'ai une fonction

void maFunc(void * s1);

est ce que je peut faire cela :slight_smile:

typedef struct {

...
...
} S2;

S2 s2;

maFunc((struct S2 *)  s2);

J'ai besoin de faire cela car j'ai une autre structure de nom différent mais avec les même éléments. Une dans un fichier .cpp et une autre dans un autre fichier .cpp qui sont les même.
mais je veux quelle soit indépendante dans chaque fichier.

Merci.

Ben oui, c'est le cas des méthodes comme 'memcmp', 'memcpy', etc. de la libc

/* Compare N bytes of S1 and S2.  */
extern int memcmp (const void *__s1, const void *__s2, size_t __n)
     __THROW __attribute_pure__ __nonnull ((1, 2));

/* Copy N bytes of SRC to DEST.  */
extern void *memcpy (void *__restrict __dest, const void *__restrict __src,
                     size_t __n) __THROW __nonnull ((1, 2));

NB: Ce n'est pas une structure void mais un pointeur de type void qui n'attend qu'une chose ... être casté sur un type défini :wink:

A suivre...

Merci. je n'était pas sur.

ce n'est pas une bonne idée d'avoir deux noms différents pour la même chose...

un jour vous modifierez la structure d'un côté et pas de l'autre et le cast se passera mal...

pourquoi ne pas mettre la structure dans son .h et l'importer des 2 côtés ?

une seule définition = pas de soucis (et vous pouvez mettre ce type directement dans la fonction au lieu de passer par void *) ou même passer par référence si vous ne passez jamais nullptr.

Oui, d'un coté ce serait plus simple d'inclure le fichier contenant la structure.
Merci.

ça vous évitera aussi des idées bêtes du compilateur / optimiseur qui feraient un padding différent entre les 2 structures.