2016-10-27 4 views
-1

Прежде чем вы спросите, да, я просмотрел это для ДНИ. Im полностью застрял ... Я использую MINGW32 (мой ярлык говорит MSYS), чтобы скомпилировать мой код c и cpp. Примерно через 2 или 3 дня я получаю странные ошибки. (ниже) Это работало JUST FINE. Я даже запускал тот же самый код, который я скомпилировал ранее, и он дал ту же ошибку. Затем я перехожу в DevC++ и открываю, а затем компилирую, это работает отлично.MinGW gcc дает ошибки, когда другие компиляторы не делают

ОШИБКИ:

namespace: command not found

using: command not found

syntax error: int main(){

(sometimes it gives me a big unreadable mess)

Я действительно застрял ... Я не хочу, чтобы переключиться на DevC++ ... Я хотел бы использовать свой собственный текстовый редактор и компилировать в командной строке.

+0

Извините, это мой первый пост на ничего подобного. Я читал много всего здесь, что помогло мне, поэтому я решил спросить ... –

+0

напишите «большой нечитаемый беспорядок», пожалуйста. а также вашу фактическую программу. Не уверен, как мы помогли бы вам, не увидев программу. – xaxxon

+0

Бьюсь об заклад, вы используете gcc вместо g ++.Кроме того, этот вопрос не имеет ничего общего с IDE, поэтому ваш смысл в DevC++ бессмыслен. – MrEricSir

ответ

-1

От ваших ошибок namespace: command not found и using: command not found говорит мне, что вы не компилируете код с соответствующим компилятором.

Для справки в Mingw32 набора инструментов:

gcc.exe = C 

g++.exe = C++ 

Вы можете найти его полезным взглянуть на то, что actualy сделать IDE с компилятором. Мой текущий IDE позволяет мне видеть все команды, которые она работает, чтобы создать свой проект:

C:/mingw32/bin/g++.exe -c "C:/MyProgram/main.cpp" -g -O0 -std=c++14 -Wall -o ./Obj/main.cpp.o -I. -IDependencies/Something/include 

Итак, давайте посмотрим, что это делает.

Мой текущий Набор инструментов является Mingw32, который расположен в C:/mingw32/bin/g++.exe

г ++ наш C++ компилятор, поэтому мы называем г ++ ехе и переходим следующий параметр:.

-c "C:/MyProgramm/main.cpp" 

Это говорит мой компилятор скомпилировать main.cpp из каталога проекта. то моя IDE добавляет несколько дополнительных ключей командной строки. Для ответа я рассмотрю только -o. Это сообщает нам выходной файл из нашего кода main.cpp в выходной файл.

Причина, по которой мы создаем такой файл, заключается в том, чтобы сэкономить время компиляции, чтобы нам не приходилось составлять один и тот же файл дважды без внесения в него изменений. Мы выполняем этот шаг по каждому из наших файлов, создавая коллекцию файлов .o.

Новый файл затем сохраняется в "C:/MyProgramm/Obj/main.cpp.o"

Это означает, что ваша функция командной строки будет выглядеть примерно так:

C:/mingw32/bin/g++.exe -c "<my project directory>/<file>.cpp" -o ./Obj/<file>.cpp.o 

Я рекомендую вам прочитать на документации для г ++ функции и узнайте из разных IDE, поскольку вскоре вы обнаружите, что вам нужно делать более сложные вещи с вашим компилятором.

Например, чтобы включить функции из C++ 14 добавить -std=c++14

* отредактирован, чтобы отразить обратную связь.

+2

Я не знаю о * компиляторе * C, который производит ошибки «command not found», потому что у C нет команд. Поэтому я сомневаюсь, что проблема связана с загрузкой программы в компилятор C. – rici

+0

@rici: C имеет команды или имеет значение C89, но по какой-то странной причине эта терминология не используется. C происходит из BCPL, где команды назывались командами также в синтаксисе. Команда - это просто оператор, который не является объявлением. Как я помню, в C89 значительная разница заключалась в том, что в блоке перед командами должны были появляться декларации. В C++ в блоке разрешен любой порядок операторов и команд, но единица перевода C++ - это только последовательность объявлений: в этой последовательности не допускаются команды (т. Е. Вы не можете иметь команду в области пространства имен). –

+0

@ Cheersandhth.-Alf: Единственное использование слова «команда», которое я могу найти на C99 или C11, приведено в разделе 7.22.4.8, в котором описывается функция 'system()'. (... функция 'system' передает строку, на которую указывает' string', на этот ** командный процессор **, который будет выполнен ...). Грамматика в (текущем) стандарте вызывает заявления операторов, как и копия K & R, которую я пинаю (2-е издание, 1988). Поэтому я поддерживаю свое заявление (или мою команду, если вы предпочитаете :)). C получен из BCPL, но это не BCPL. И я очень сомневаюсь, что компиляторы BCPL также выдали ошибки «command not found». – rici

Смежные вопросы