expression: pointer-to-funct typ error



  • hallo,

    void funct (unsigned char *pchar)		
    
    struct Struct2 {
    
    	void  *ptr; 
    	//...
    }; 
    
    typedef struct {
    
    	struct Struct2   *p
    	//...
    }Struct1; 
    
    Struct1 *pstruct;
    unsigned char *pchar;  
    
    pstruct->p->ptr = funct(pchar);
    

    leider bekomm ich stets die Fehlermeldung: "expression must have (pointer-to-) function typ...

    wie muss ich es anders schreiben?

    gruß
    patrick



  • hier noch mal den kompletten code - habe zwei zweilen vergessen:

    short funct (unsigned char *pchar);
    
    struct Struct2 
    { 
      void  * ptr; 
    }; 
    
    typedef struct 
    { 
      struct Struct2 * p;
    } Struct1;
    

    main function:

    Struct1 *pstruct; 
      unsigned char *pchar; 
    
      (short) (*pstruct->p->ptr)(unsigned char *pchar) = funct; 
      if((pstruct->p->ptr)(pchar) != 0);
    

    zuerst möchte ich gern einen funktionspointer ptr auf die funktion funct
    erstellen. Anschließend möchte ich gern die funktion funct aufrufen mit
    dem Übergabewert pchar - der Return-Wert wird in der if-Anweisung
    ausgeführt.

    Allerdings sind hier noch fehler vorhanden.
    gruß
    patrick



  • Hier ist ein Beispiel für Funktionspointer:

    http://www.cpp-tutor.de/cpp/le07/le07_01_d1.htm



  • Oder auf den Punkt gebracht:

    #include "stdlib.h"
    
    short funct(unsigned char *pchar);
    short (*FP)(unsigned char*);
    
    int main() {
      FP=&funct;
      unsigned char c='X';
    
      short sh=FP(&c);
    
      return 0;
    }
    
    short funct(unsigned char *pchar) {
      return (short)*pchar;
    }
    

Log in to reply