Я преобразовал некоторый старый код Fortran в C с помощью конвертера f2c (f2c), и я создал решение Visual Studio 10 с использованием Cmake в Windows 7 (64-разрядная версия). Мне также пришлось связать мою C++-программу (test.cpp, содержащую мою основную функцию) с библиотекой f2c (построенной на моей системе с использованием nmake). Несмотря на то, что я работал с CMake и Visual Studio, после компиляции программы я теперь получает ряд загадочных ошибок, связанных с файлами заголовков, поставляемых с Visual Studio:Неожиданные ошибки в Visual Studio включают файлы
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(141): error C2059: syntax error : '('
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(141): error C2059: syntax error : '-'
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(141): error C2059: syntax error : ')'
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(250): error C2027: use of undefined type '_Ty'
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(250): error C2226: syntax error : unexpected type 'std::complex<_Other>'
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(250): error C2988: unrecognizable template declaration/definition
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(250): error C2059: syntax error : '-'
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(250): error C2065: '_Ty' : undeclared identifier
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(250): error C2059: syntax error : ')'
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(263): error C2065: '_Ty' : undeclared identifier
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(263): error C2065: '_Ty' : undeclared identifier
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(264): error C2143: syntax error : missing ';' before '{'
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(264): error C2447: '{' : missing function header (old-style formal list?)
Создание файла решения Visual Studio из царапины, похоже, тоже не очень хорошо работают, и я все еще получаю те же ошибки. Что я могу сделать, чтобы выявить проблему с этими ошибками? Очевидно, что что-то не так с файлами, которые я включил или написал, но что это может быть? Ошибки не сразу указывают на определенный раздел кода, поэтому отладка сложна.
Вот ссылка на заголовочный файл f2c.h (f2c.h). Я добавил
#ifdef __cplusplus
extern "C" {
#endif
к вершине и
#ifdef __cplusplus
}
#endi
в нижней части этого файла заголовка, так как мой test.cpp программа C++.
Это обычно указывает на одну из двух вещей: либо какой-либо заголовок имеет зависимость от другого заголовка, и вы не включили его, либо есть синтаксическая ошибка перед включением заголовка (возможно, в другой заголовок), который вызывает неправильно обработанный заголовок. – Sven
@Sven: Спасибо, я попытался перетасовать порядок файлов заголовков, и кажется, что перемещение '#include f2c.h' в начало файла (без заголовков перед ним) все еще вызывает те же ошибки, а также некоторые дополнительные ошибки, обнаруженные в 'math.h'. Я не знаю, как исправить ситуацию, если 'f2c.h' действительно требуется, и файлы заголовков системы не могут быть удалены каким-либо образом. –