Кажется, что getopt
ведет себя иначе в Windows, чем в Linux. В Windows требуется строгий порядок параметров, а в Linux я могу расположить аргументы в любом порядке. Рассмотрим программу test
, которая использует getopt
, скомпилированную для Linux (gcc) и Windows (MinGW), и возьмем следующую командную строку, например:
test file1.bin file2.bin -o output.txt
Выполнение этой команды в Linux будет правильно проанализировать -o output.txt
как параметр (+ параметр) независимо от того, куда я положил -o output.txt
. Это также может быть между file1.bin
и file2.bin
, и getopt
синтаксический анализ будет по-прежнему работать правильно, поскольку он сортирует аргументы, помещая необязательные аргументы перед мандаториями.
Выполнение этой команды в Однако Windows приводит к неправильному синтаксическому анализу, что приводит к неверному индексу в переменной optind
. Кажется, что точно такой же код при компиляции в Windows не выполняет для меня часть сортировки. Почему это, мы можем обойти это?