Использование Visual Studio Express2013 для рабочего стола Windows с проектом C++ "Консольное приложение Win32"
(Я делаю проект для курса. Чтобы начать, мне нужно импортировать все файлы проекта, предоставленные преподавателем — их очень много (все файлы .cpp и .h), так что я могу' на самом деле я не копирую и не вставляю сюда какие-либо из них... но я все равно не думаю, что проблема в этом).
Когда я нажимаю "запустить отладчик", я получаю почти 200 синтаксических ошибок в файле math.h, несмотря на то, что файл math.h входит в состав Visual Studio.
Все ошибки кажутся очень простыми, например:
"Missing ')' before identifier _X'"
"'_X' : undefined identifier"
"'floor' : definition of dllimport data not allowed"
"syntax error : missing ';' before '+'"
etc... these syntax errors go on into the 200s.
(Я бы скопировал и вставил весь журнал ошибок, но там 262 ошибки, и во всех них указан путь к каталогу, поэтому вы, ребята, не сможете его прочитать)
Почему у меня так много синтаксических ошибок в math.h, если math.h — это файл, созданный самой Visual Studio?
(Я пытался понять это несколько недель, и я не могу начать работать над проектом, пока он не скомпилируется)
math.h
— это заголовок C, вместо него используйтеcmath
. - person   schedule 01.02.2015math.h
перед остальными вещами (переместите их в начало списка включений). - person Roman R.   schedule 01.02.2015math.h
— это текстовый файл, который препроцессор просто вставляет в ваш код. Что-то в вашем собственном коде, расположенное выше точки включения, может легко испортить правильную обработку внедренногоmath.h
. Например, то, что вы испытываете, легко достижимо, если переопределить ключевое слово как макрос. (Также, хотя и менее вероятно, здесь могут быть виноваты несовместимые настройки проекта.) - person AnT   schedule 01.02.2015double
как макрос. Или, может быть,float
. - person Igor Tandetnik   schedule 01.02.2015#include <math.h> int main() { double d = sqrt(4.0); }
Что это делает? Если он компилируется, то все эти заголовки вызывают проблему — это не имеет ничего общего с Visual Studio. - person PaulMcKenzie   schedule 01.02.2015<math.h>
является заголовком C. Его вполне допустимо использовать в коде C++, но предпочтительнее версия<cmath>
для C++ (разница в том, что<cmath>
помещает объявления в пространство именstd
). Изменение его на<cmath.h>
, вероятно, уменьшит количество ошибок - и первое, вероятно, будет заключаться в том, что<cmath.h>
не существует; это<cmath>
, не ‹cmath.h›`. Ваш вопрос должен включать исходный файл, который вы компилируете, предпочтительно сокращенную версию, которая воспроизводит проблему. И вам не нужно показывать нам сотни строк сообщений об ошибках, но первые несколько строк могут помочь. - person Keith Thompson   schedule 01.02.2015<math.h>
в коде C++ разрешено.<cmath>
предпочтительнее, но это не проблема. - person Keith Thompson   schedule 01.02.2015<cmath>
, а не<math.h>
. Оба имени заголовка допустимы, хотя<cmath>
предпочтительнее; маловероятно, что использование<math.h>
действительно решило вашу проблему. Пожалуйста, (а) обновите свой вопрос, чтобы показать нам фактический код, вызвавший проблему (ваш собственный код, а не заголовок<math.h>
), и (б) сообщите нам, как вы на самом деле исправили это, если у вас есть. - person Keith Thompson   schedule 01.02.2015math.h
наcmath
, и он скомпилировался и теперь работает. - person Frustrated   schedule 02.02.2015