2010-06-29 4 views
7

Ich habe ein paar C++ - Dateien und eine begleitende Makefile geerbt, die ich versuche, in VS2010 als eine Lösung zu bringen. Ich habe ein leeres Projekt erstellt und die entsprechenden C++ - und Headerdateien (.hpp) für eines der Makefile-Ziele hinzugefügt.cmath compilation Fehler beim Kompilieren von alten C++ Code in VS2010

Wenn ich versuche, das Projekt zu kompilieren, aber ich bekomme sofort eine große Anzahl von C2061 (Syntaxfehlerkennung) Fehler von cmath kommt in Bezug auf acosf, asinf, atanf usw.

Die Fehlerzeile in cmath:

#pragma once 
#ifndef _CMATH_ 
#define _CMATH_ 
#include <yvals.h> 

#ifdef _STD_USING 
    #undef _STD_USING 
    #include <math.h> 
    #define _STD_USING 

#else /* _STD_USING */ 
    #include <math.h> 
#endif /* _STD_USING */ 

#if _GLOBAL_USING && !defined(RC_INVOKED) 

_STD_BEGIN 
using _CSTD acosf; using _CSTD asinf; 

der obere Block der entsprechenden C++ Datei (obwohl als .C genannt):

#include <fstream> 
#include <iostream> 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

using namespace std; 

Gefolgt von der Funktion main(), die nicht des TRIG nicht aufrufen funktioniert direkt. Das muss etwas wirklich Offensichtliches sein, aber ich vermisse es. Kann jemand helfen?

Danke!

Antwort

10

Sind Sie sicher, dass es als C++ kompiliert? Die meisten Compiler kompilieren .C-Dateien als C- und .cpp-Dateien wie C++. Das Kompilieren einer C++ - Datei mit einem C-Compiler wird wahrscheinlich fehlschlagen.

Außerdem mischt dieser Code Oldstyle ('c') - Header und Newstyle ('C++') - Header. Es sollte eher so sein (ich bezweifle, dass das der Fehler ist).

#include <fstream> 
#include <iostream> 
#include <cstdio> 
#include <cstdlib> 
#include <cstring> 

using namespace std; 

Das ist alles was ich sehen kann mit dem, was Sie gegeben haben. Aber die meiste Zeit, wenn Sie Fehler in Bibliotheksdateien von C/C++ selbst bekommen, ist es immer noch der Code von Ihnen, der irgendwo falsch ist, wie das vergessen; nach einer Klassenanweisung in einer Header-Datei.

+0

Eigentlich, denke ich die meisten Compiler Kompilieren Sie .C-Dateien als C++, wenn das Dateisystem Groß- und Kleinschreibung unterscheidet. Aber unter Windows unterscheidet das Dateisystem nicht zwischen Groß- und Kleinschreibung. Also könntest du hier etwas unternehmen. –

+0

Nun, ich würde es testen, wenn ich eine Windows-Installation in der Nähe hätte :). Ich kenne Sie die Kompilierung angeben können, wie ... in Visual Studio-Einstellung, aber ich weiß nicht, wie es ‚errät‘ den Anfangswert (Projekt basiert, Datei-basierte, ...). – KillianDS

+2

seine Erweiterung basiert - .c oder .C-Dateien zusammenstellen, wie C und CPP/CPP oder jede andere Variation als CPP-Dateien in Visual Studio erstellt. Seine Zusammenstellung als CPP nicht wie der Autor meint, es als C. kompiliert Wie für den gemischten C/CPP Kopf Einschlüsse, es ist nicht ein Killer. –

4

Es ist wahrscheinlich nicht kompilieren als C++ - Code - wie Sie vermuten. Ich werde Sie bitten, mit der rechten Maustaste auf die Datei in vs2010 zu klicken, auf Eigenschaften zu klicken, zu 'Konfigurationseigenschaften - C/C++ - Erweitert' zu gehen und sicherzustellen, dass 'Kompilieren als' auf 'Kompilieren als C++ - Code (/ TP) gesetzt ist ‘.. Wenn nicht, ändern Sie es zu, dass dann neu kompilieren .. Sie müssen Ihre vorkompilierte Header neu, aber ich werde sein, dies behebt Ihr‚Problem‘;)

+0

Ja, das war es. Vielen Dank! Ich wusste, dass es eine dumme Frage war, aber es ist großartig, eine schnelle Antwort zu haben :) –

Verwandte Themen