Des Rätsels Lösung:
Also bei der Begründung muss ich ehrlich zugeben buin ich mir nicht ganz sicher, aber ich weiß wie es funktionieren sollte:
begründung: Bei deinem Aufruf der Funktion die was in deine Struktur schreiben soll wird eine Kopie erzeugt. Mit dem Aufruf:
extern void UseReceivedValues(char *PtrDaten, TImportStruct ImportDaten);
erstellst du eine Kopie von Importdaten die zufällig den gleichen Namen hat wie dein globale Variable Importdaten. Der Compiler nutzt aber immer die lokale Variable vorzugsweise.
Die Lösung: ich habe mal ein kleines Beispiel
Datei test.h:
#include <stdio.h>
typedef struct
{
int x;
int y;
} str, *pstr;
void tue_was();
Datei main.c:
#include <stdio.h>
#include "test.h"
str neu;
int main()
{
neu.x = 5;
neu.y = 3;
printf("x: %d\ny: %d",neu.x,neu.y);
tue_was(neu); printf("\nx: %d\ny: %d",neu.x,neu.y);
return 0;
}
Die datei tue_was.c
#include "test.h"
#include <stdio.h>
extern str neu;
void tue_was(str p)
{
neu.x=8;
neu.y=1;
}
Ich hoffe ich habe keinen Mist geschrieben und du kannst das Beispiel auf dein Problem übertragen
mfg fabian
Edit die globale Variable stört mich: 😁
also folgende Änderung: der Prototyp der tue_was Funktion lautet jetzt wie folgt:
void tue_was(pstr p);
Die Funktion selbst:
p->x=8;
p->y=1;
Der Aufruf der Funktion:
tue_was(&neu);
Und natürlich wird neu jetzt innerhalb der main deklariert.