0

Я новичок в работе в Visual Studio (использую версию 2005). Я сталкиваюсь с проблемой с пространствами имен, которые я не могу понять.Проблемы с компиляцией пространства имен

Я пытаюсь создать статическую библиотеку, которую я позже свяжу с приложением.

Итак, у меня есть XXX.h файл со следующим кодом

#ifndef _XXX_X_H 
#define _XXX_X_H 

namespace LLL_NWK 
{ 
    void lllInit(); 
} 
#endif 

я включаю XXX.h в XXX.c и код выглядит

#include "XXX.h" 

using namespace LLL_NWK; 

void lllInit() 
{ 
} 

Однако, когда я строю в библиотеке я столкнулся со следующими ошибками:

error C2061: syntax error : identifier 'LLL_NWK' 
error C2059: syntax error : ';' 
error C2449: found '{' at file scope (missing function header?) 
error C2059: syntax error : '}' 

Я не могу понять причину этой ошибки. Поблагодарили бы за помощь и указатели.

+2

переименовать 'XXX.c' в' XXX.cc' или 'XXX.cpp' - компилятор считает, что это обычный код' C', а не код 'C++ ' – Petesh

ответ

2

Во-первых, using namespace LLL_NWK здесь не подходит. Вы объявляете и определяете функцию void lllInit()за пределами от namespace LLL_NWK. Вы должны поместить определение внутри пространства имен, что может быть сделано, как это:

void LLL_NWK::lllInit() 
{ 
} 

или как это:

namespace LLL_NWK 
{ 
    void lllInit() 
    { 
    } 
} 

Во-вторых, убедитесь, что вы компилируете код как C++.

0

Этот код не поддерживается компилятором C - обязательно переименуйте имя файла в .cpp вместо .c. В этом случае пространство имен не поддерживается. См. Это сообщение: Namespaces in C

+0

спасибо ... по привычке Я всегда называю файлы с расширением .c. –

+0

@AdityaSehgal это не все исправит. Ваш код неверен, см. Мой ответ. – juanchopanza

+0

Хуан указывает на действительный момент - так что лучше подумайте, что он только что сказал. Приведенный выше код подвержен ошибкам в файле определения (я уверен, что видел такое использование пространства имен в std для исправления конфликтов пространства имен). Код по-прежнему действует. – MasterPlanMan

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