Standardtypen werden nicht mehr unterstützt
-
Hi ihr,
Ich habe hier ein Projekt aus der Visual Studio 6 Zeit.
Dieses habe ich nun in Visual Studio 2008 geöffnet und versucht es zu kompilieren.
Es klappt allerdings nicht.
Schuld daran ist eine Änderung von Visual Studio 7 zu 2005.error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
Ich kann nicht ganz glauben, dass es keine Möglichkeit gibt defaultTypen wieder zu aktivieren?
Schließlich gäbe es ja so mit älteren versionen nurnoch konflikte.Weiß jemand ob es möglich ist das noch umzustellen?
Oder muss ich mir wieder Visual Studio 6 installieren?cya
David
-
Kann auch sein dass du den Fehler missinterpretierst.
Dieser Fehler kommt oft, wenn man einfach vergisst bei Funktionsdeklaration und vor allem bei Definitionen, den Rückgabetyp anzugeben. Und da kann man sich noch so ärgern, keine Rückgabetypen anzugeben ist einfach nur falsch.
-
error C4430: Fehlender Typspezifizierer
Darin liegt der Fehler.
-
Er zeigt aber alle Fehler innerhalb von SDK Dateien an. Ich selbst habe in meinem Quelltext nur Header des SDKs eingebunden.
Und es gibt tatsächlich an den Stellen, welche markiert sind Funktionen ohne Rückgabetyp.
In diesem Fall ist es ein Operator.
Allerdings ist dieser Teil einer Klasse, welche ich nicht geschrieben habe, sondern welche dem SDK entspringt.Ich werd mal eben die neue Version installieren und schaun obs dann geht
cya
DavidEdit:
Hier die Klasse mit Fehler aus der Datei ctutil.h
class COARefTime : public CRefTime { public: COARefTime() { }; COARefTime(CRefTime t) : CRefTime(t) { }; COARefTime(REFERENCE_TIME t) : CRefTime(t) { }; COARefTime(double d) { m_time = (LONGLONG) (d * 10000000); }; operator double() { return double(m_time) / 10000000; }; operator REFERENCE_TIME() { return m_time; }; COARefTime& operator=(const double& rd) { m_time = (LONGLONG) (rd * 10000000); return *this; } COARefTime& operator=(const REFERENCE_TIME& rt) { m_time = rt; return *this; } inline BOOL operator==(const COARefTime& rt) { return m_time == rt.m_time; }; inline BOOL operator!=(const COARefTime& rt) { return m_time != rt.m_time; }; inline BOOL operator < (const COARefTime& rt) { return m_time < rt.m_time; }; inline BOOL operator > (const COARefTime& rt) { return m_time > rt.m_time; }; inline BOOL operator >= (const COARefTime& rt) { return m_time >= rt.m_time; }; inline BOOL operator <= (const COARefTime& rt) { return m_time <= rt.m_time; }; inline COARefTime operator+(const COARefTime& rt) { return COARefTime(m_time + rt.m_time); }; inline COARefTime operator-(const COARefTime& rt) { return COARefTime(m_time - rt.m_time); }; inline COARefTime operator*(LONG l) { return COARefTime(m_time * l); }; inline COARefTime operator/(LONG l) { return COARefTime(m_time / l); }; private: // Prevent bugs from constructing from LONG (which gets // converted to double and then multiplied by 10000000 COARefTime(LONG); operator=(LONG); };
Der Fehler kommt aus der letzten Zeile, wo ein Operator = ohne Rückgabetyp steht.
cya
David
-
777 schrieb:
Er zeigt aber alle Fehler innerhalb von SDK Dateien an. Ich selbst habe in meinem Quelltext nur Header des SDKs eingebunden...
Okay, nach vergeblichen Suchen in meinen Verzeichnissen ist es also nicht die normale SDK von MS, sondern speziell die Direkt SDK.
Folgenden Thread habe ich dazu gefunden:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1989036&SiteID=1
Schau mal ob es dir weiterhilft.Prinzipiell kann es nicht der Sinn sein, das Microsoft seine Entwicklungsumgebung zu fehlerhaften Vorversionen kompatibel hält. Gut, in dem Fall kann man MS eine gewisse Schlampigkeit vorwerfen, sie hätten schon früher "standardkonformer" werden können, und ihre eigenen Bibliothekten testen sollen.
cu André
-
Durch den Link wurde mein Problem gelöst. Es geht jetzt
Danke