У меня есть файл заголовка, который включен как в собственный файл 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
Попытка решения:
В настоящее время я использую решение для препроцессора, которое вызывает общедоступность при компиляции с управляемым клиентом, но не отображается для собственного клиента:
#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
{
};
Вопрос:
Является ли это подходящим способом для достижения этого или есть лучший способ?