2010-06-29 4 views
7

J'ai hérité quelques fichiers C++ et un makefile d'accompagnement, que je suis en train de mettre en VS2010 comme une solution. J'ai créé un projet vide et ajouté les fichiers C++ et en-tête (.hpp) appropriés pour l'une des cibles du fichier makefile.erreur de compilation cmath lors de la compilation ancien code C++ dans VS2010

Lorsque je tente de compiler le projet, cependant, je reçois immédiatement un grand nombre d'erreurs C2061 (identificateur d'erreur de syntaxe) provenant de cmath concernant acosf, asinf, atanf, etc.

La ligne d'erreur dans 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; 

le bloc supérieur du fichier concerné C++ (bien que nommé comme .C):

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

using namespace std; 

Suivi par la fonction principale(), qui ne remet pas du TRIG fonctionne directement. Cela doit être quelque chose de vraiment évident, mais il me manque. Quelqu'un peut-il aider?

Merci!

Répondre

10

Etes-vous sûr qu'il compile en C++? La plupart des compilateurs compileront le fichier .C en tant que fichiers C et .cpp en C++, la compilation d'un fichier C++ avec un compilateur C échouera probablement.

têtes En outre, ce code mélange oldstyle ('C') en-têtes et newstyle ('C++'). Ca devrait être plus comme ça (je doute que ce soit l'erreur cependant).

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

using namespace std; 

C'est tout ce que je peux voir avec ce que vous avez donné. Mais la plupart du temps quand vous obtenez des erreurs dans les fichiers de bibliothèque de C/C++ lui-même, c'est toujours le code de vous qui est faux quelque part, comme oublier le; après une instruction de classe dans un fichier d'en-tête.

+0

En fait, je pense que la plupart des compilateurs compilez les fichiers .C en C++ si le système de fichiers est sensible à la casse. Mais dans Windows, le système de fichiers n'est pas sensible à la casse. Donc, vous pourriez être sur quelque chose ici. –

+0

bien, je le testerais si j'avais une installation Windows à proximité :). Je sais que vous pouvez spécifier la compilation comme ... réglage en studio visuel, mais je ne sais pas comment il "devine" la valeur initiale (basée sur un projet, basée sur un fichier, ...). – KillianDS

+2

son extension à base - .c ou fichiers .C compilés comme C et Cpp/.CPP ou toute autre variation est compilé sous forme de fichiers du RPC, en studio visuel. Il ne se compile pas en CPP comme le pense l'auteur, il compile en C. Quant aux inclusions d'en-têtes mixtes C/CPP, ce n'est pas un tueur. –

4

Son probablement pas la compilation en code C++ - que vous assumez. Je vais vous demander de faire un clic droit sur le fichier dans vs2010, cliquez sur Propriétés, allez dans 'Propriétés de configuration - C/C++ - Avancé', et assurez-vous que 'Compiler sous' est réglé sur 'Compiler comme code C++ (/ TP) » .. Sinon, changer à cela, alors recompiler .. vous pouvez avoir à recréer vos têtes précompilés, mais je vais être cela résout votre « problème »;)

+0

Oui, c'était ça. Merci! Je savais que c'était une question stupide, mais c'est génial d'avoir une réponse rapide :) –

Questions connexes