2010-06-29 36 views
7

Tôi đã thừa hưởng một vài tệp C++ và một tệp makefile đi kèm, mà tôi đang cố gắng đưa vào VS2010 làm giải pháp. Tôi đã tạo một dự án trống và thêm các tệp C++ và tiêu đề (.hpp) thích hợp cho một trong các mục tiêu makefile.Lỗi biên dịch cmath khi biên dịch mã C++ cũ trong VS2010

Khi tôi cố gắng biên dịch dự án, tuy nhiên, tôi ngay lập tức nhận được một số lượng lớn các C2061 (cú pháp nhận dạng lỗi) lỗi đến từ cmath về acosf, asinf, atanf vv

Dòng lỗi trong 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; 

khối đỉnh có liên quan C++ file (mặc dù đặt tên như một .C):

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

using namespace std; 

Tiếp theo là() chức năng chính, mà không gọi cho bất kỳ của trang điểm chức năng trực tiếp. Điều này phải là một cái gì đó thực sự rõ ràng, nhưng tôi đang thiếu nó. Có ai giúp được không?

Cảm ơn!

Trả lời

10

Bạn có chắc là nó được biên dịch thành C++ không? Hầu hết các trình biên dịch sẽ biên dịch tệp .C dưới dạng tệp C và .cpp dưới dạng C++, biên dịch tệp C++ bằng trình biên dịch C có thể sẽ không thành công.

Ngoài ra, mã đó trộn các tiêu đề kiểu cũ ('c') và tiêu đề kiểu mới ('C++'). Nó sẽ được nhiều hơn như thế này (tôi nghi ngờ đó là lỗi tuy nhiên).

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

using namespace std; 

Đó là tất cả những gì tôi có thể thấy với những gì bạn đã cung cấp. Nhưng hầu hết thời gian khi bạn nhận được lỗi trong các tập tin thư viện của C/C++ chính nó, nó vẫn là mã của bạn đó là sai một nơi nào đó, giống như quên; sau một tuyên bố lớp trong một tệp tiêu đề.

+0

Thực ra, tôi nghĩ hầu hết các trình biên dịch sẽ biên dịch các tệp .C dưới dạng C++ nếu hệ thống tệp phân biệt chữ hoa chữ thường. Nhưng trong Windows, hệ thống tệp không phân biệt chữ hoa chữ thường. Vì vậy, bạn có thể được vào một cái gì đó ở đây. –

+0

tốt, tôi sẽ kiểm tra nó nếu tôi đã có một cửa sổ cài đặt gần đó :). Tôi biết bạn có thể chỉ định các biên dịch như ... thiết lập trong studio trực quan, nhưng tôi không biết làm thế nào nó 'đoán' giá trị ban đầu (dự án dựa trên, tập tin dựa, ...). – KillianDS

+2

các tệp mở rộng dựa trên - .c hoặc .C biên dịch dưới dạng C và .cpp/.CPP hoặc bất kỳ biến thể nào khác được biên dịch dưới dạng tệp CPP, trong studio trực quan. Nó không biên dịch như CPP như tác giả nghĩ, nó được biên dịch như C. Đối với các phần tiêu đề hỗn hợp C/CPP, nó không phải là một kẻ giết người. –

4

Nó có thể KHÔNG biên dịch thành mã C++ - như bạn giả định. Tôi sẽ yêu cầu bạn nhấp chuột phải vào tệp trong vs2010, nhấp vào thuộc tính, đi tới 'Thuộc tính cấu hình - C/C++ - Nâng cao' và đảm bảo 'Biên dịch thành' được đặt thành 'Biên dịch dưới dạng mã C++ (/ TP) '.. Nếu không, thay đổi nó thành, sau đó biên dịch lại .. bạn có thể phải tạo lại các Tiêu đề được biên dịch trước của bạn, nhưng tôi sẽ sửa lỗi' vấn đề 'của bạn;)

+0

Vâng, đây là nó. Cảm ơn! Tôi biết đó là một câu hỏi ngu ngốc, nhưng thật tuyệt khi có câu trả lời nhanh :) –

Các vấn đề liên quan