簡體   English   中英

編譯時檢查 C++ 中結構的更改

[英]Compile time check for changes to struct in C++

我在 struct.h 中有一個serializable的結構,我正在使用自定義序列化方法在 serialize.h 中序列化。 如果對我的serializable結構進行了更改,我需要確保在 serialize.h 中也進行了相應的更改。
典型的反射方法為此使用了一些宏。 但是我們的結構的性質和我們在序列化期間處理數據的方式並不能很好地解決這個問題。

有沒有辦法做一些 static 編譯時檢查,所以如果可serializable結構以任何方式更改而不更改 serialize.h,那么構建將失敗。

我已經想到但更願意將其作為最后手段的一種方法是在 serialize.h 中復制可serializable結構的定義並使用boost::is_same檢查錯誤消息,要求在 serialize.h 中進行相應更改

我們決定只對代碼進行校驗和驗證。 如果可serializable結構被修改,則 static_assert 將失敗並且錯誤消息要求更新代碼和校驗和。 這是我們為使代碼更易於閱讀而做出的妥協,同時確保我們不會忘記更新序列化。

暫無
暫無

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

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