हाल ही में मैं सभी चेतावनियों को सक्षम करने के /Wall Visual C++ option का उपयोग करने की कोशिश की और पाया कि निम्न कोड:FARPROC के साथ GetProcAddress को कॉल के आसपास C4191 चेतावनी को कैसे संबोधित करें?
typedef BOOL (WINAPI * TIsWow64ProcessFunction)(HANDLE, BOOL*);
TIsWow64ProcessFunction isWow64ProcessFunction = reinterpret_cast<TIsWow64ProcessFunction> (
::GetProcAddress(kernel32DllHandle, "IsWow64Process"));
पैदा की C4191:
warning C4191: 'reinterpret_cast' : unsafe conversion from 'FARPROC' to 'TIsWow64ProcessFunction'
Calling this function through the result pointer may cause your program to fail
अगर मैं एक सी शैली डाली का उपयोग एक ही चेतावनी दिखाई देता है, लेकिन अब यह "reinterpret_cast" के बजाय "प्रकार कास्ट" का उल्लेख करता है।
किसी भी मामले के लिए एक ही चेतावनी दोहराई जाती है जिसे मैं GetProcAddress()
पर कॉल करता हूं और इसके वापसी मूल्य को कुछ उपयोग करने योग्य फ़ंक्शन पॉइंटर में परिवर्तित करता हूं।
मैं इन चेतावनियों को कैसे संबोधित करूं? क्या मुझे अपने कोड में बदलाव करने की ज़रूरत है?
#pragma चेतावनी (निष्क्रिय कर दें: 4191) उपयुक्त लग रहा है लक्ष्य 0 चेतावनी तक पहुँचने के लिए है अगर: यह विशेष रूप से चेतावनी थेरेस के रूप में बेकार नहीं (स्पष्ट) जिस तरह से है, जबकि कार्यक्षमता रखने यह से बचना है। –
क्या यह आपके लिए चेतावनी को आग लगाता है? मैंने कभी भी दीवार/दीवार, वीएस में केवल पी 4 चेतावनी स्तर का उपयोग नहीं किया। टाइपपीफ बूल (विनिपी * डिस्बलेरडर) (पीवीओआईडी *); डिस्बलेरिएडर fpnDisableRedir = NULL; fpnDisableRedir = (DISABLEREDIR) GetProcAddress (hKernel32, "Wow64DisableWow64FsRedirection"); – Kra
@ क्रा: हाँ, यह सी 4191 के साथ/दीवार बनाता है। कुंजी सी 4191 डिफ़ॉल्ट रूप से अक्षम है और/दीवार इसे सक्षम बनाता है। – sharptooth