在我的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 FilesMicrosoft SDKsWindowsv6.0Aincludewinnt.h
中被定义为typedef LONGLONG USN
。
我通过放一个
typedef int USN;
行,这导致编译器报告原始 typedef 位置的错误。
似乎正在发生的事情是,将USN
声明为[DataMember]
会导致编译器在全局命名空间中查找,并找到USN
的 typedef