Возникли проблемы при компиляции в терминале VS Code, который является Windows Powershell - PullRequest
2 голосов
/ 07 июня 2019

Когда я нажимаю правую кнопку Run code и запускаю в терминале в моих пользовательских настройках, я получаю эти ошибки.

At line:1 char:63
+ ... "c:\Users\Josh\Documents\Programming\Learning to Program\" && g++ Exe ...
+                                                                ~~
The token '&&' is not a valid statement separator in this version.
At line:1 char:99
+ ... \Learning to Program\" && g++ Exercise36.cpp -o Exercise36 && "c:\Use ...
+                                                                ~~
The token '&&' is not a valid statement separator in this version.
At line:1 char:102
+ ... ercise36 && "c:\Users\Josh\Documents\Programming\Learning to Program\ ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Expressions are only allowed as the first element of a pipeline.
At line:1 char:160
+ ...  "c:\Users\Josh\Documents\Programming\Learning to Program\"Exercise36
+                                                                ~~~~~~~~~~
Unexpected token 'Exercise36' in expression or statement.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : InvalidEndOfLine

До сегодняшнего дня я хорошо компилировал, немного погуглил и начал вводить свои собственные команды в терминал, а не просто запускать код.

Я начал заменять && на -and и получил другую проблему. Вот как выглядит команда сейчас.

"c:\Users\Josh\Documents\Programming\Learning to Program\" -and g++ Exercise36.cpp -o Exercise36 -and "c:\Users\Josh\Documents\Programming\Learning to Program\"Exercise36

Это ошибка, которую я получаю.

Set-Location : Parameter cannot be processed because the parameter name 'o' is ambiguous. Possible matches include: -OutVariable -OutBuffer.
At line:1 char:87
+ ... \Programming\Learning to Program\" -and g++ Exercise36.cpp -o Exercis ...
+                                                                ~~
    + CategoryInfo          : InvalidArgument: (:) [Set-Location], ParameterBindingException
    + FullyQualifiedErrorId : AmbiguousParameter,Microsoft.PowerShell.Commands.SetLocationCommand

Я использую компилятор с открытым исходным кодом GNU, это первая проблема, с которой я столкнулся при компиляции, так как я понял, что вам нужно сохранить перед компиляцией. Я запускаю простую строку, которая меняет все символы на X из строки, которая читается из терминала из программы C ++ Primer. Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 07 июня 2019

У меня была такая же проблема, я думаю, что она вызвана новой версией кода VS 1.35.Я попытался понизиться до 1.34, а компиляция и запуск c ++ снова сработали.

Старая версия, похоже, запускает код с другой командой:

"cd $ dir; if ($?) {g ++ $ fileName -o $ fileNameWithoutExt}; if ($?) {. \\ $ fileNameWithoutExt} "

в вашем случае это будет выглядеть так:

cd "c: \ Users \ Josh \ Documents \ Programming \ Learning to Program \";if ($?) {g ++ Exercise36.cpp -o Exercise36};if ($?) {. \ Exercise36}

Для меня, используя эту команду, компиляция и запуск работает и в новой версии VS.

0 голосов
/ 07 июня 2019

Только угадайте, что вам может понадобиться:

# change to the directory, where your source code resides
Set-Location "c:\Users\Josh\Documents\Programming\Learning to Program\" 

# Invoke compiler via the call operator = &
& g++ Exercise36.cpp -o Exercise36 

# change to the directory, where your binary resides
Set-Location "c:\Users\Josh\Documents\Programming\Learning to Program\Exercise36"

Вы можете выполнить эти три команды, если разделите их на ;:

   Set-Location "c:\Users\Josh\Documents\Programming\Learning to Program\"; & g++ Exercise36.cpp -o Exercise36; Set-Location "c:\Users\Josh\Documents\Programming\Learning to Program\Exercise36"

Если вы хотите проверитьВ качестве результата команды вы можете использовать $? переменную .

...