2010-06-29 11 views
7

Ho ereditato alcuni file C++ e un makefile associato, che sto cercando di introdurre in VS2010 come soluzione. Ho creato un progetto vuoto e aggiunto i file C++ e header (.hpp) appropriati per uno dei target makefile.durante la compilazione del vecchio codice C++ in VS2010

Quando provo a compilare il progetto, però, ho subito ottenere un gran numero di C2061 (sintassi identificatore errore) gli errori provenienti da cmath riguardanti acosf, asinf, atanf, ecc

La linea di errore di 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; 

il blocco superiore del file in questione C++ (se nominato come .C):

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

using namespace std; 

Seguita dalla funzione main(), che non richiede nessuna delle trig funzioni direttamente. Questo deve essere qualcosa di ovvio, ma mi manca. Qualcuno può aiutare?

Grazie!

risposta

10

Sei sicuro che si compila come C++? La maggior parte dei compilatori compilerà file .C come file C e .cpp come C++, la compilazione di un file C++ con un compilatore C probabilmente fallirà.

Inoltre, il codice combina intestazioni oldstyle ('c') e intestazioni newstyle ('C++'). Dovrebbe essere più simile a questo (dubito che sia l'errore comunque).

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

using namespace std; 

Questo è tutto ciò che posso vedere con quello che hai dato. Ma la maggior parte delle volte in cui ricevi errori nei file di libreria di C/C++ stesso, è sempre il codice di te che è sbagliato da qualche parte, come dimenticare il; dopo un'istruzione di classe in un file di intestazione.

+0

In realtà, penso che la maggior parte dei compilatori compilare file .C come C++ se il file system fa distinzione tra maiuscole e minuscole. Ma in Windows, il file system non è case sensitive. Quindi potresti essere su qualcosa qui. –

+0

beh, lo testerei se avessi una installazione di Windows nelle vicinanze :). So che puoi specificare la compilazione come ... impostazione in Visual Studio, ma non so come "indovina" il valore iniziale (basato su progetto, basato su file, ...). – KillianDS

+2

la sua estensione basata - i file .c o .C vengono compilati come C, e .cpp/.CPP o qualsiasi altra variante è compilata come file CPP, in Visual Studio. Non si compila come CPP come pensa l'autore, si sta compilando come C. Per quanto riguarda le inclusioni di intestazione C/CPP miste, non è un killer. –

4

Probabilmente NON sta compilando come codice C++, come si suppone. Ti chiedo di fare clic con il pulsante destro del mouse sul file in vs2010, fare clic su Proprietà, andare su "Proprietà di configurazione - C/C++ - Avanzate" e accertarti che "Compila come" sia impostato su "Compila come codice C++ (/ TP) '.. In caso contrario, modificalo, quindi ricompilalo .. potresti dover ricreare le tue intestazioni precompilate, ma ho intenzione di risolvere il tuo' problema ';)

+0

Sì, era così. Grazie! Sapevo che era una domanda stupida, ma è bello avere una risposta veloce :) –

Problemi correlati