<windows.h>為WinAPI的Ansi和Unicode版本定義了宏。
我的類別庫中有一個名為SendMessage的函式。它作業得很好,直到<windows.h>被包含在我的庫中之前。在這種情況下,SendMessage被宏覆寫,函式名稱變成SendMessageA或SendMessageW。
是否有可能在不改變函式名稱的情況下,以某種方式處理它,以保存與舊版本庫的兼容性?
uj5u.com熱心網友回復:
真正的問題是,WinAPI的函式定義是在C-preprocessor級別的,因此你必須寫一些丑陋的代碼來嘗試與它們共存。
如果可能的話,你應該重新命名你的代碼庫中的函式,這樣就不會與WinAPI發生沖突了。
否則,您可以撰寫類似 #undef SendMessage 的代碼,在定義您自己的函式之前取消 WinAPI 對該函式的定義。
如果你需要在定義你自己的函式和使用WinAPI的函式宏之間進行切換,你也可以使用#pragma push_macro和#pragma pop_macro功能來保留undef之前的宏并在之后恢復它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/320301.html
標籤:
上一篇:如何將一個Win32GUI應用程式作為后臺行程啟動?
下一篇:屬性'PropertyName'無法被映射,因為它的型別是'object',而這不是一個支持的原始型別或有效的物體型別。
