У меня есть заголовочный файл, который включается как в собственный файл cpp, так и в управляемый файл cpp (скомпилированный с / clr). Он включает только собственные типы, но я хочу указать, что собственные типы видны вне сборки
(см. http://msdn.microsoft.com/en-us/library/4dffacbw(VS.80).aspx).
По сути, я хочу:
public class NativeClass // The public makes this visible outside the assembly.
{
};
Если я включаю этот код из нативного cpp, я получаю следующую ошибку:
error C3381: 'NativeClass' : assembly access specifiers are only available in code compiled with a /clr option
Попытка решения:
В настоящее время я использую препроцессорное решение, которое приводит к тому, что public появляется при компиляции с управляемым клиентом, но не для собственного клиента:
#ifdef __cplusplus_cli
#define CLR_ASSEMBLY_ACCESS_SPECIFIER__Public public
#else
#define CLR_ASSEMBLY_ACCESS_SPECIFIER__Public
#endif
CLR_ASSEMBLY_ACCESS_SPECIFIER__Public
class NativeClass
{
};
Вопрос:
Это подходящий способ для достижения этого или есть лучший способ?