我在C#项目中有一个HTTPSystemDefinitions.cs文件,该文件基本上描述了较旧的Windows ISAPI,供托管代码使用。
这包括与ISAPI相关的完整结构集,而不是全部或被代码使用。在编译时,这些结构的所有字段成员都将引起如下警告:
警告字段'UnionSquare.ISAPI.HTTP_FILTER_PREPROC_HEADERS.SetHeader'从未分配给该字段,并且其默认值始终为null
要么
警告从未使用字段'UnionSquare.ISAPI.HTTP_FILTER_PREPROC_HEADERS.HttpStatus'
这些可以禁用#pragma warning disable
吗?如果是这样,相应的错误号是什么?如果没有,我还能做什么?请记住,我只是要对此文件执行此操作,重要的是让我看到来自其他文件的此类警告。
编辑
示例结构:-
struct HTTP_FILTER_PREPROC_HEADERS
{
//
// For SF_NOTIFY_PREPROC_HEADERS, retrieves the specified header value.
// Header names should include the trailing ':'. The special values
// 'method', 'url' and 'version' can be used to retrieve the individual
// portions of the request line
//
internal GetHeaderDelegate GetHeader;
internal SetHeaderDelegate SetHeader;
internal AddHeaderDelegate AddHeader;
UInt32 HttpStatus; // New in 4.0, status for SEND_RESPONSE
UInt32 dwReserved; // New in 4.0
}
[StructLayout(LayoutKind.Sequential)]
确保内存布局正确(在当前实现中,甚至没有此属性也可以,但是不能保证AFAIK)。如果我没记错的话,C#编译器会检测到此属性的存在,并会自动禁止显示这些警告,因为它知道必须存在用于互操作的字段。(对此我可能是错的,因此将其发布为评论而不是答案)。
StructLayout
。似乎比抑制警告本身还干净。