Ошибка компиляции cygwin в sys/_types.h

Я пытаюсь использовать cywin для создания кода Linux на машине win32.

Я получаю следующую ошибку VS.net 2003 в компиляторе ym:

"c:\cygwin\usr\include\sys_types.h(15): ошибка C2144: синтаксическая ошибка: перед "__int64" должен стоять ";" "

а также

c:\cygwin\usr\include\sys_types.h(15): ошибка C2501: 'extension': отсутствуют спецификаторы класса хранения или типа

Строка кода

__extension__ typedef long long _off64_t;

Очевидно, я что-то упускаю здесь, но я никогда раньше не использовал cygwin, и это меня убивает.

Я хочу иметь возможность, по крайней мере, компилировать файлы CPP на моей машине с Win32 по нескольким причинам.

(похоже, это только первые две ошибки из сотен)

спасибо, тим

РЕДАКТИРОВАТЬ:

простой обходной путь, который я выбрал в качестве ответа, хотя я понимаю, что он не такой полный или желательный, как использование gcc для компиляции... Это быстрая и грязная компиляция, так что я могу использовать свои знакомые инструменты, прежде чем пытаться интегрироваться с линукс машины. (о радостях кроссплатформенной разработки)

Я проголосовал за каждый из этих ответов до сих пор и ценю помощь)


person Tim    schedule 23.02.2009    source источник


Ответы (4)


Я думаю, что макрос extension может быть не определен. Возможно, вы захотите выполнить текстовый поиск в заголовочном каталоге cygwin, чтобы убедиться, что это так. Если это так, убедитесь, что путь поиска заголовка определен правильно и т. д.

person Dana the Sane    schedule 23.02.2009
comment
Также обратите внимание, что в этом случае гашение макроса работает re: jpalcek ниже. Очевидно, что вы должны быть осторожны с тем, что вы делаете. - person Dana the Sane; 24.02.2009

Я могу ошибаться, но заголовки cygwin могли быть сделаны специально для компиляции с использованием cygwin gcc, а не Visual Studio. Попробуйте скомпилировать с помощью gcc/g++ в cygwin.

РЕДАКТИРОВАТЬ: возможно, я смогу использовать Visual Studio, эта страница (для другого проекта), похоже, подразумевает, что вы можете что-то скомпилировать с помощью vc++/cygwin. http://opensg.vrsource.org/trac/wiki/BuildVS2005Cygwin.

Вы можете проверить это.

EDIT2: См. также: http://www.coin-or.org/OS/documentation/node14.html

EDIT3: Я бы предположил, что лучшим грубым действием было бы убедиться, что Visual Studio сначала ищет стандартные пути Windows. Поэтому, если есть система <sys/types.h>, она может быть предпочтительнее версии cygwin.

person Evan Teran    schedule 23.02.2009

Ключевое слово __extension__ — это расширение gcc для обозначения кода, использующего расширения gcc (в данном случае long long), поэтому оно не взрывается в педантичном режиме. Если можете, попробуйте скомпилировать свой код с помощью gcc.

person jpalecek    schedule 23.02.2009
comment
Можно ли это исправить, #определив ключевое слово на ' '? - person Dana the Sane; 24.02.2009
comment
Я попробую ggc ass, но я также определил расширение, и, похоже, оно работает намного лучше. - person Tim; 24.02.2009
comment
Если это работает, то все в порядке. В любом случае ключевое слово не имеет никакого реального значения. Однако меня немного беспокоили расширения gcc, которых нет в MSVC, например. расширенный asm, составные литералы?, массивы переменной длины и т. д. Если бы источник содержал их, у вас не было бы другого выбора, кроме gcc - person jpalecek; 24.02.2009

В C++ любое имя, предшествующее (или содержащее) двойное подчеркивание, является именем, зарезервированным для конкретной реализации, в данном случае GNU C++. MS C++ будет использовать другие имена. Итог - вы не можете скомпилировать исходники g++ с MS C++ или наоборот, если исходники используют такие имена.

person Community    schedule 23.02.2009