ฉันมีไฟล์ HTTPSystemDefinitions.cs ในโครงการ C # ซึ่งโดยพื้นฐานแล้วจะอธิบายถึง ISAPI ของ windows รุ่นเก่าสำหรับการใช้งานโดยใช้รหัสที่มีการจัดการ
ซึ่งรวมถึงชุดโครงสร้างทั้งหมดที่เกี่ยวข้องกับ 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
สำหรับใช้ ดูเหมือนสะอาดกว่าการระงับคำเตือนด้วยตนเอง