Я получил файл исходного кода C ++ от одного из моих учеников, который создал его в Visual Studio 2017, и он правильно скомпилирован и связан на его компьютере.В качестве теста я также скомпилировал его на своем компьютере с Windows 10, используя каждый из VS2017, Clang v7.0.0, Intel Parallel Studio XE 2019 и g ++ (x86_64-posix-seh-rev0, созданный проектом MinGW-W64) 8.1.0.Он прекрасно компилировался со всеми, кроме MinGW-W64, который генерировал много ошибок и предупреждений, таких как:
C:\temp>g++.exe -c MyFile.cpp
MyFile.cpp:1:1: error: stray '\377' in program
■# i n c l u d e < i o s t r e a m >
^
MyFile.cpp:1:2: error: stray '\376' in program
■# i n c l u d e < i o s t r e a m >
^
MyFile.cpp:1:3: error: stray '#' in program
■# i n c l u d e < i o s t r e a m >
^
MyFile.cpp:1:4: warning: null character(s) ignored
■# i n c l u d e < i o s t r e a m >
^
MyFile.cpp:1:6: warning: null character(s) ignored
■# i n c l u d e < i o s t r e a m >
^
MyFile.cpp:1:8: warning: null character(s) ignored
■# i n c l u d e < i o s t r e a m >
^
Я просмотрел файл исходного кода с помощью шестнадцатеричного редактора и обнаружил, что первые два байта имели шестнадцатеричные значенияFF и EF соответственно.После этого каждому байту ASCII предшествовал байт 00.Мое первое предположение состояло в том, что это был файл Unicode (или что-то подобное).
Я предполагаю, что некоторые настройки в его конфигурации Windows 10 или в VS, или, может быть, в обоих, вызывают генерацию файлов этого типа, возможно выбор языка / языка по умолчанию.Таким образом, у меня есть два вопроса:
Есть ли какая-то настройка в конфигурации MinGW-W64, которая позволит ему обрабатывать файлы такого типа без жалоб, как VS, Intel и Clang ужеделать?Если да, то что это?
Если некоторые настройки в Windows или VS вызывают создание файлов этих типов редактором VS, особенно то, что нужно изменить, чтобы вызвать просто ASCIIфайлы, которые будут созданы вместо этого?
Я всегда отговариваю студентов от создания файлов Unicode только из-за подобных проблем, но я бы также дал им некоторую информацию о том, как этого избежать, когда это происходит.бывает.Я бы загрузил сам файл исходного кода, но не смог найти способ сделать это на этом сайте.
Спасибо, Рэй