Du kannst keine Zeiger auf lokale nicht-statische Variablen zurückgeben. Der Speicher hört am Ende der Funktion auf zu existieren! Außerdem wird returnVal nie beschrieben.
Erstelle das Array außerhalb der Funktion und übergebe den Zeiger als Paramter:
byte* S7Float_to_Byte(const float inFloat, byte* buffer)
{
byte* bytes = (byte*)&inFloat;
buffer[0] = bytes[3];
buffer[1] = bytes[2];
buffer[2] = bytes[1];
buffer[3] = bytes[0];
return buffer;
}
Und dann so aufrufen:
byte bigEndian[4];
S7Float_to_Byte(value, bigEndian);
Alternativ kannst du auch das Array innerhalb der Funktion als static deklarieren. Dann sind die 4 Bytes halt immer belegt. Wie eine globale Variable mit lokalem Scope.