*reinterpret_cast
-
ich habe ein kleines Programm und raff nicht ganz was der *reinterpret_cast macht
using namespace std; int main(int argc, char** argv) { int serial, r; long mtype=0; char buffer[MAXTEXT + sizeof(long)]; cout << "\n*** Zugriffscode für die Warteschlange: "; serial = msgget(QKEY, IPC_CREAT | S_IRWXU | S_IROTH); cout << serial << endl << endl; while(mtype !=TERMINATOR) { cout << "Neue Nachricht. Typ eingeben: "; cin >> mtype; cin.ignore(); cout << " Text eingeben: "; cin.getline(&buffer[sizeof(long)], MAXTEXT, '\n'); *reinterpret_cast<long*> (buffer) = mtype; r = msgsnd(serial,buffer,strlen(&buffer[sizeof(long)]),0); cout << "..." << (r?"ERROR":"OK") << endl; } sleep(1); r=msgctl(serial,IPC_RMID,0); cout << endl; cout << "*** Warteschlange gelöscht: " cout << (r?"ERROR:"OK") << "\n\n"; return 0; }
-
Hallo,
der reinterpret_cast castet den char-Zeiger buffer in einen Zeiger auf long. Dieser Zeiger wird dann dereferenziert. Das Ergebnis ist also ein long. Hier werden also die ersten sizeof(long)-Bytes des char-Arrays buffer als long interpretiert und mit dem Wert von mtype beschrieben.