В моем проекте C ++ у меня есть класс SOAP:
namespace soapcon
{
[DataContract]
public ref class z
{
public:
[DataMember]
int USN;
};
}
Если USN
участник помечен как [DataMember]
Я получаю ошибку компилятора syntax error : unexpected type 'USN'
, Однако, если я закомментирую [DataMember]
все компилируется без ошибок.
Является USN
тип, используемый WCF, или есть какая-то другая причина этой ошибки?
Оказывается USN
определяется в C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winnt.h
как typedef LONGLONG USN
,
Я узнал об этом, положив
typedef int USN;
линия вне пространство имен, из-за которого компилятор сообщал об ошибке, сообщавшей о местонахождении исходного typedef.
Кажется, что происходит то, что USN
быть [DataMember]
заставляет компилятор искать в глобальном пространстве имен и находить typedef для USN
,
Других решений пока нет …