GetUid
-
Sers, ist zwar ein Problem unter Unix, denke aber passt hier besser:
Wieso geht folgender geht nicht? Die Fehlermeldung ist:info.cpp: In function
void PrintUserName()': info.cpp:17: assignment to \
char *' from `__uid_t' lacks a cast#include <iostream> #include <unistd.h> using namespace std; namespace UI { uid_t getuid(void); } struct Userinfo { char *name; }; void PrintUserName() { Userinfo ui; ui.name = UI::getuid(); } int main() { }
-
uid_t ist ein typedef für __uid_t, das ein typedef auf __uint32_t ist, das auf i32 architekturen unsigned int ist.
Was dir getuid zurückgibt, und was eine uid ist, wird dir Linux/Unix Forum besser beantwortet.
-
getuid gibt Dir nicht den Benutzernamen sondern die numerische User-ID zurück!
-
Geht trotzdem nicht!
#include <iostream> #include <unistd.h> using namespace std; namespace UI { uid_t getuid(void); } struct Userinfo { unsigned int uid; }; void PrintUserName() { Userinfo ui; ui.uid = getuid(); } void PrintInfo(Userinfo* u) { cout << u->uid; } int main() { PrintInfo(); }
ausserdem heißt die funktion nur PrintUserName, da ich später noch andere sachen in diese Funktion packen werde.
-
Schau doch mal was Dein Compiler für Meldungen ausspuckt; PrintInfo verlangt ein Argument vom Typ Userinfo* aber Du übergibst keines.
Meintest Du vielleicht sowas:
#include <iostream> #include <unistd.h> using namespace std; struct Userinfo { unsigned int uid; }; void PrintInfo(Userinfo* u) { cout << u->uid; } void PrintUserName() { Userinfo ui; ui.uid = getuid(); PrintInfo(&ui); } int main() { PrintUserName(); }
Das sollte funktionieren, allzu schön ist es aber nicht...
-
Du machst mir ja meinen Code zu nichte
Ist schon richtig so das ich PrintInfo() in main() aufrufen will.
-
Warum übergibst Du dann keinen Parameter?