2013-11-18 2 views
0

Я использую Visual Studio 2008. Я работаю над AM335x WinCE7 BSP. Я добавил новый исходный код библиотеки, который включает файлы заголовков из общей папки. Проблема, с которой я сталкиваюсь, заключается в том, что когда я компилирую этот код библиотеки, я получаю синтаксическую ошибку в классе в общем файле заголовка папки. В обычных кодах отсутствует вероятность возникновения синтаксических ошибок. Поэтому я сомневаюсь, что это может вызвать некоторые другие проблемы. Я получаю предупреждение относительно этого, которое, как я чувствую, приводит к ошибке.Синтаксические ошибки в файле WinCE C

warning C4218: nonstandard extension used : must specify at least a storage class or a type 

Я использовал pragma для подавления предупреждения. Но, хотя предупреждение было проигнорировано, ошибка сохраняется.

Просьба проинструктировать меня об этом, поскольку у меня нет ни малейшего представления об этом. Кроме того, если какая-либо другая информация необходима по этому поводу, прокомментируйте.

EDIT1:

На самом деле код огромен. См. this link. У меня очень похожая проблема. Они попросили добавить файлы StdAfx.cpp и StdAfx.h. Но это для VC++. Итак, я смущен, совместим ли он с файлом Wince C.

EDIT2:

Я получаю следующие ошибки.

error C2061: syntax error : identifier 'CReg' 
error C2059: syntax error : ';' 
error C2449: found '{' at file scope (missing function header?) 
error C2059: syntax error : '}' 
error C2143: syntax error : missing '{' before '*' 
warning C4431: missing type specifier - int assumed. Note: C no longer supports default-int 
warning C4218: nonstandard extension used : must specify at least a storage class or a type 


class CSDIOControllerBase -> C2061,C2059 
{       -> C2449 
// some code 

};       -> C2059 

CSDIOControllerBase *CreateSDIOController(); -> C2143 
+0

Возможно ли, чтобы вы опубликовали код из библиотек, которые генерируют предупреждение? – Lundin

+0

@ Lundin Я отредактировал мое сообщение. Пожалуйста, проверьте это. – Gomu

+0

Код может быть «огромным», но в сообщении об ошибке и предупреждении указывается конкретный файл и строка кода. Вы можете опубликовать как затронутую строку (возможно, по крайней мере, с ее окружающими линиями), так и опубликовать сообщение об ошибке - а не только предупреждение. Эти сообщения называются «диагностика компилятора» по какой-то причине! – Clifford

ответ

1

Код, который вы пытаетесь скомпилировать как C, на самом деле является C++, и поэтому требуется компиляция C++. Вы не можете включать заголовок C++ непосредственно в код, скомпилированный как C.

Если вам нужно использовать функции, предоставляемые этим заголовком, есть вероятность, что вам нужно будет использовать C++ в любом случае. Таким образом, ваш собственный код должен быть C++ в этом случае.

Смежные вопросы