61 votes

Définir des fonctions dans des structs

Pouvons-nous définir des fonctions dans des structs en langage de programmation C ?

75voto

glglgl Points 35668

Non, car les fonctions ne sont pas des données. Mais vous pouvez définir des pointeurs de fonction à l'intérieur d'une structure.

 struct foo {
    int a;
    void (*workwithit)(struct foo *);
}

5voto

Sonu Kr Mishra Points 23

Non, vous ne pouvez pas avoir de fonctions dans struct dans un programme C. J'ai écrit un seul code et l'ai enregistré en tant que .c et .cpp. Le fichier .cpp est conforme et fonctionne comme prévu, mais le fichier .c ne se compile même pas.

Voici le code pour votre référence. Enregistrez-le une fois en tant que .cpp, puis exécutez-le. Ensuite, enregistrez le même code que .c et compilez-le. Vous obtiendrez des erreurs de compilation.

 #include <stdio.h>
struct C {
    void Test(int value) {
       static int var = 0;
       if (var == value) 
          printf("var == value\n");
       else
          printf("var != value\n");

       var = value;
     }
 }; 

 int main() {
    C c1;
    C c2;
    c1.Test(100);
    c2.Test(100);
    int ii;
    scanf("%d",&ii);
 }

3voto

Mat Points 104488

Non.

Vous pouvez avoir des pointeurs de fonction dans les structs, mais c'est aussi proche que possible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X