簡體   English   中英

在C ++中定義錯誤代碼常量的位置

[英]Where to define error code constants in C++

我已經從C ++ DLL中導出了一個方法,然后從VB.net表單應用程序中調用了它。 C ++方法當前沒有返回值(無效),但我想對其進行改進,並返回一個表示一系列錯誤代碼的int值。 (如果一切順利,我計划返回零。)

定義這些錯誤代碼的最佳位置在哪里?如何?

我應該在CPP文件的頂部執行以下操作:

#define ERR_NEGATIVE_CELL_SIZE 1
#define ERR_INVALID_FILE_PATH 2
etc

VB.net應用程序還將定義這些相同的代碼,然后根據該代碼向用戶顯示UI消息。

顯然,我更願意在DLL中引發異常並在VB.net中捕獲該異常(以及相關的異常消息),但這似乎無法使用外部“ C” __declspec(dllexport)方法來實現。

很高興得知替代設計模式。 我還計划通過C ++控制台可執行文件公開DLL方法,因此將錯誤消息一次存儲在DLL中,並使控制台和UI應用程序都可以使用它們是理想的。

請盡可能避免使用預處理器。

對於您的方案,定義一個枚舉是合理的。 在函數原型旁邊定義它。 要公開翻譯內容,請使用翻譯功能並將其導出。 就像是:

size_t TranslateError(int error, char* buffer, size_t size)

返回:轉換后消息的大小,如果返回<= len,則消息在緩沖區中

如果您希望錯誤代碼可用於其他編譯單元,則最好將它們放在頭文件中。 通常,在編寫庫代碼時,您將創建一個或多個頭文件,這些頭文件聲明使用該庫所需的所有常量,類型,函數和類。 然后將實現編譯到庫中。 庫的使用者包括您的標頭和導入庫。

關於常量,您建議使用#define聲明它們。 不要那樣做 考慮使用常量或枚舉。 預處理器通常是盡可能少使用的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM