У мене є проект HTTPSystemDefinitions.cs у проекті C #, який в основному описує старіші програми Windows ISAPI для споживання керованим кодом.
Сюди входить повний набір структур, що стосуються ISAPI, не всі або які використовуються кодом. Під час компіляції всі польові члени цих структур викликають попередження на зразок наступного: -
Поле попередження 'UnionSquare.ISAPI.HTTP_FILTER_PREPROC_HEADERS.SetHeader' ніколи не призначається, і завжди матиме значення за замовчуванням
або
Попередження Поле "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
. Це здається чистішим, ніж придушення самих попереджень.