Problem mit selbstdefinierten Datentyp in Funktionen



  • hallo
    ich habe in meine c datei eine andere eingefügt in der nur datentypen definiert sind

    in der c datei kann ich auf die selbst definierten datentypen zugreifen, jedoch nicht in der funktion

    der code sieht verkürzt so aus

    #include "USMCDLL.h"
    
      USMC_StartParameters StPrms; //kein fehler
    
    void mexFunction(int nlhs, mxArray *plhs[], int nrhs,
                     const mxArray *prhs[])
    {
    
      USMC_StartParameters StPrms2; //Ungültige Verwendung dieses Typs als  Ausdruck
    
    }
    

    und die USMCDLL.h (verkürzt)

    // Structure representing start function parameters
    typedef struct USMC_StartParameters_st{
    	BYTE SDivisor;		// Step is divided by this factor (1,2,4,8)
    	BOOL DefDir;		// Direction for backlash operation (relative)
        BOOL LoftEn;		// Enable automatic backlash operation (works if slow start/stop mode is off)
    	BOOL SlStart;		// If TRUE slow start/stop mode enabled.
    	BOOL WSyncIN;		// If TRUE controller will wait for input synchronization signal to start
    	BOOL SyncOUTR;		// If TRUE output synchronization counter will be reset
    	BOOL ForceLoft;		// If TRUE and destination position is equal to the current position backlash operation will be performed.
    	BYTE Reserved[4];	// <Unused> File padding
    } USMC_StartParameters;
    

    bitte helft mir, gibt es eine art befehl um datentypen in funktionen zu übernehmen? ähnlich den variablen?



  • - Das sieht aus wie C, nicht wie C++. Sicher dass du im richtigen Forum bist?
    - Hast du wirklich nur die eine Zeile in der Funktion stehen oder auch was anderes? Falls ja, dann liegts vermutlich an dem was davor steht. (Reduzierten Code zu posten ist lobenswert, aber nur wenn er auch den Fehler produziert den du hast).



  • vielen dank für deine antwort, ich hab meinen fehler gefunden
    mit dem hinweis das alle variablen deklarationen nur am anfang der funktion sein dürfen 😃



  • gelenke-harald schrieb:

    mit dem hinweis das alle variablen deklarationen nur am anfang der funktion sein dürfen 😃

    In C++ ist das sicher nicht der Fall, und soviel ich weiss, auch in neueren C-Versionen nicht mehr.



  • Nexus schrieb:

    gelenke-harald schrieb:

    mit dem hinweis das alle variablen deklarationen nur am anfang der funktion sein dürfen 😃

    In C++ ist das sicher nicht der Fall, und soviel ich weiss, auch in neueren C-Versionen nicht mehr.

    Soweit ich weiß, war das nur in sehr alten C-Versionen der Fall. Wie wäre es mit upgraden?


  • Administrator

    @Nexus & The-Kenny,
    Ab C99 hat man diese Änderung eingeführt. C89/C90 hatten noch diese Einschränkung. Also sooo seehr alt würde ich das nicht bezeichnen, vor allem im Verhältnis zum Alter der Sprache selbst gesehen 😉

    Auch weiss ich nicht, wie die Unterstützung für C99 aussieht. Letztens hat man mir im C Forum hier gesagt, dass die Unterstützung inzwischen ziemlich gut wäre. Kurz darauf habe ich aus anderer Quelle erfahren, dass sie nur "so la la" sei. Also keine Ahnung, wie es aktuell ist 🙂

    Grüssli



  • Dravere schrieb:

    Auch weiss ich nicht, wie die Unterstützung für C99 aussieht. Letztens hat man mir im C Forum hier gesagt, dass die Unterstützung inzwischen ziemlich gut wäre. Kurz darauf habe ich aus anderer Quelle erfahren, dass sie nur "so la la" sei. Also keine Ahnung, wie es aktuell ist 🙂

    Vermutlich hat die erste Quelle gcc gemeint und die zweite MSVC? 🙂


  • Administrator

    LordJaxom schrieb:

    Vermutlich hat die erste Quelle gcc gemeint und die zweite MSVC? 🙂

    Gut möglich, dass die erste Quelle den MSVC ausgelassen und die zweite sich mit ihrer Aussage hauptsächlich auf den MSVC abgestützt hat. Ach, immer diese nicht-neutralen Leute 😃

    Bin jetzt aber zu faul, dies nachzuprüfen, da einfach zu wenig interesse dazu bei mir vorhanden ist 😉

    Grüssli


Anmelden zum Antworten