Thread
-
Hallo ich lese gerade eine Tutorial über Threads aber das Tutorial ist in C geschrieben.
Jetzt wollte ich einfach printf und so durch cout<< ersetzen aber sobald ich #include <iostream> deklariere fängt der Compiler an zu mekern -.-
#include <iostream> // ohne iostream funktioniert es aber dann kann ich ja kein cout<< benutzen >_< #include <windows> DWORD WINAPI Thread() { while(1) { Sleep(20); printf("thread"); } } int main(int argc, char *argv[]) { CreateThread(NULL, 0, Thread, NULL, 0, NULL); while(1) { sleep(1); printf("Hauptprogramm!\n"); } return 0; }Fehler:
Erzeugen [C++ Fehler] _mbstate.h(52): E2257 , erwartet [C++ Fehler] type_traits.h(64): E2453 Größe des Typs '__true_type' unbekannt oder Null [C++ Fehler] type_traits.h(65): E2453 Größe des Typs '__false_type' unbekannt oder Null [C++ Fehler] type_traits.h(68): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(70): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(73): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(77): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(82): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(89): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(90): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(98): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(107): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(174): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(200): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(201): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(204): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(209): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(210): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(213): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(224): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(226): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(228): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(230): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(232): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(235): E2141 Fehler in der Deklarationssyntax [C++ Fehler] type_traits.h(235): E2228 Zu viele Fehlermeldungen oder Warnungenund dann öffnet der noch in meinem Borland Builder ein neues Editor Fenster dort wird dann diese Datei geöffnet _mbstate.h
und darin steht dann:
#ifndef _INTERNAL_MBSTATE_T #define _INTERNAL_MBSTATE_T # define _STLP_USE_OWN_MBSTATE_T # define _MBSTATE_T # ifdef _STLP_USE_OWN_MBSTATE_T // to be compatible across different SUN platforms #ifdef __sun # define __stl_mbstate_t __mbstate_t #endif struct __stl_mbstate_t; # ifdef __cplusplus struct __stl_mbstate_t { __stl_mbstate_t( long __st = 0 ) { _M_state[0] = __st ; } __stl_mbstate_t& operator=(const long __st) { _M_state[0] = __st; return *this; } __stl_mbstate_t(const __stl_mbstate_t& __x) {_M_state[0]= __x._M_state[0]; } __stl_mbstate_t& operator=(const __stl_mbstate_t& __x) { _M_state[0]= __x._M_state[0]; return *this; } # if defined (__sun) # ifdef _LP64 long _M_state[4]; # else int _M_state[6]; # endif # else long _M_state[1]; # endif }; inline bool operator==(const __stl_mbstate_t& __x, const __stl_mbstate_t& __y) { return ( __x._M_state[0] == __y._M_state[0] ); } inline bool operator!=(const __stl_mbstate_t& __x, const __stl_mbstate_t& __y) { return ( __x._M_state[0] == __y._M_state[0] ); } # endif _STLP_BEGIN_NAMESPACE typedef __stl_mbstate_t mbstate_t; _STLP_END_NAMESPACE # endif /* _STLP_USE_OWN_MBSTATE_T */ #endif /* _INTERNAL_MBSTATE_T */Und das sagt mir nix.

-
Mal über neuen Compiler nachdenken
-
Mal als C++ und nicht C Code compilieren
-
Vielleicht auch <windows.h> verwenden
-
Hat leider nicht funktioniert

Erzeugen [C++ Warnung] Unit1.cpp(12): W8066 Code wird nie erreicht [C++ Fehler] Unit1.cpp(20): E2034 Konvertierung von 'unsigned long (__stdcall *)()' nach 'unsigned long (__stdcall *)(void *)' nicht möglich [C++ Fehler] Unit1.cpp(20): E2342 Keine Übereinstimmung des Typs beim Parameter 'lpStartAddress' ('unsigned long (__stdcall *)(void *)' erwartet, 'unsigned long (__stdcall *)()' erhalten) [C++ Warnung] Unit1.cpp(29): W8066 Code wird nie erreichtDer Code:
#include <iostream> #include <windows.h> DWORD WINAPI Thread() { while(1) { Sleep(1); std::cout<<"Thread\n"; } return 0; } int main(int argc, char *argv[]) { CreateThread(NULL, 0, Thread, NULL, 0, NULL); while(1) { Sleep(1); std::cout<<"Hallo, ich bin das Hauptprogramm!\n"; } return 0; }
-
Die Signatur deiner Thread-Funktion stimmt nicht:
DWORD WINAPI Thread(void*)
-
Jetzt funktioniert es :>
ty