Hallo,
ich habe folgendes Konstrukt in einem Treiber:
1 | class SerialDevice
|
2 | {
|
3 | virtual void Read(char* data, int32_t count) = 0;
|
4 | virtual void Write(char* data, int32_t count) = 0;
|
5 | inline char ReadChar(void) {char ret; Read(&ret, sizeof(char)); return ret;} // <---
|
6 | inline void WriteChar(char data) {Write(&data, sizeof(char));}
|
7 | }
|
Alle SerialDevice's müssen also Read/Write implementieren. Die
Basisklasse kann aber schon ReadChar und WriteChar inline
implementieren.
Es geht um die Funktion ReadChar. Es ist klar, dass der Rückgabewert
einer char-Variable zugewiesen werden wird bzw. der Entwickler das durch
den Funktionsaufruf erahnen kann, der die Funktion nutzt. Ich gehe
davon, dass der Compiler durch das Inlining die Funktion und das "char
ret"-Behelfskonstrukt sowieso herausoptimiert.
Worauf ich nun hinaus will: Gibt es eine C-Syntax die z.B. Folgendes
erlauben würde?
1 | char ReadChar(void) {Read(&<OrtAnDenReturnwertGespeichertWerdenWird>, sizeof(<Returnwerttyp>);}
|
Also direkt den Zugriff auf den Ort an den der Returnwert der Funktion
hinübergeben wird und z.B. auch eine Abfrage des Typs mit sizeof() ohne
den Rückgabetyp explizit anzugeben? Also so eine Art "Referenz auf den
Returnwert".
Die Frage ist eher hypothetisch ohne praktischen Anwendungsfall, aber es
würde mich doch mal interessieren, ob sowas mit Boardwerkzeugen möglich
ist?