2010-06-29 19 views
7

Odziedziczyłem kilka plików C++ i towarzyszącą im plik makefile, który próbuję wprowadzić do VS2010 jako rozwiązanie. Stworzyłem pusty projekt i dodałem odpowiednie pliki w C++ i nagłówku (.hpp) dla jednego z celów plików Makefile.Błąd kompilacji cmath podczas kompilowania starego kodu C++ w VS2010

Kiedy próbuję skompilować projekt, jednak od razu uzyskać dużą liczbę C2061 (składnia identyfikatora błędu) błędów pochodzących z cmath dotyczące acosf, asinf, atanf itp

Linia błąd w 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; 

górny blok pliku istotne C++ (choć nazwany jako .C):

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

using namespace std; 

Obserwowani przez głównego function(), która nie wymaga żadnej z trygonometrycznych działa bezpośrednio. To musi być coś naprawdę oczywistego, ale tęsknię za tym. Czy ktoś może pomóc?

Dzięki!

Odpowiedz

10

Czy na pewno kompiluje się jako C++? Większość kompilatorów skompiluje plik .C jako pliki C i .cpp jako C++, kompilacja pliku C++ z kompilatorem C prawdopodobnie się nie powiedzie.

Również ten kod łączy nagłówki oldstyle ("c") i newstyle ("C++"). Powinien być bardziej podobny (wątpię jednak, że to błąd).

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

using namespace std; 

To wszystko, co mogę zobaczyć z tym, co dałeś. Ale przez większość czasu, kiedy dostajesz błędy w plikach bibliotek samego C/C++, nadal jest to kod, który gdzieś jest błędny, na przykład zapominając; po instrukcji klasy w pliku nagłówkowym.

+0

Właściwie, myślę, że większość kompilatorów będzie kompilować pliki .C jako C++, jeśli system plików rozróżnia wielkość liter. Ale w systemie Windows system plików nie rozróżnia wielkości liter. Więc możesz być tutaj na czymś. –

+0

cóż, testowałbym go, gdybym miał zainstalowane okno w pobliżu :). Wiem, że możesz określić kompilację jako ... ustawienie w visual studio, ale nie wiem, jak "odgaduje" wartość początkową (opartą na projekcie, opartą na plikach, ...). – KillianDS

+2

jego pliki oparte na rozszerzeniu - .c lub .C kompilowane jako C, a .cpp /. CPP lub dowolna inna odmiana jest kompilowana jako pliki CPP w visual studio. Nie kompiluje się jako CPP, jak myśli autor, kompiluje się jako C. Podobnie jak mieszane inkluzje nagłówków C/CPP, nie jest to zabójca. –

4

Prawdopodobnie NIE kompiluje się jako kod C++ - jak można zakładać. Poproszę o kliknięcie prawym przyciskiem myszy pliku w wersji vs2010, kliknij właściwości, przejdź do "Właściwości konfiguracji - C/C++ - Zaawansowane" i upewnij się, że "Kompiluj jako" jest ustawione na "Kompiluj jako kod C++" (/ TP) "... Jeśli nie, zmień go na to, a następnie przekompiluj ... być może będziesz musiał odtworzyć wstępnie skompilowane nagłówki, ale ja to naprawię twój" problem ";)

+0

Tak, to było to. Dzięki! Wiedziałem, że to głupie pytanie, ale wspaniale jest mieć szybką odpowiedź :) –

Powiązane problemy