c и c ++ совместно используют файл h с пространством имен - PullRequest
1 голос
/ 15 марта 2012

У меня есть компонент, написанный на C ++, и я хочу поделиться файлом H между этим и аналогичным компонентом, написанным на C.

В файле H есть

namespace X
{
    struct MessageData
    {
     // parameters
    }
};

IНужно, чтобы оба компонента использовали одну и ту же структуру - вот почему я хочу использовать один и тот же файл.Как я могу заставить их использовать один и тот же файл - из-за пространства имен?

Решение, которое я нашел, заключается в том, чтобы обернуть замедление пространства имен с #ifdef _cplusplus...

Это нормально?Есть еще идеи?

1 Ответ

4 голосов
/ 15 марта 2012

Записать файл заголовка на C, то есть без какого-либо пространства имен.Скажем, файл заголовка message.h, тогда вы можете использовать файл заголовка в C ++ как:

//CPP code
namespace X
{
   #include "message.h"  //put this inside a namespace so that 
                         //you could avoid potential name collision
}

//Use message as
X::MessageData msg; //use fully-qualified name

И код C будет таким:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...