我們正在使用C++構建DLL。由於我們在DLL的大小中有400個大小變得越來越大,因此有沒有其他方法使用替代交換機是否有任何其他方式來編寫在C++中使用switch語句的代碼
0
A
回答
9
您所切換的數據類型取決於。如果它是一個密集的int範圍,則使用存儲函數指針的查找表。在其他情況下,使用從切換值到功能指針的std::map
。
0
2
我會說切換不是問題。
你的分支之間有很多代碼重複(我想你還有類似395的東西),所以你應該能夠通過抽象出通用部分來縮小你的DLL;唯一的區別是您正在檢索哪個字段以及您使用它執行的計算。如果您的代碼與您發佈的代碼完全相似,那麼絕大多數代碼可以在分支之間共享。
如果你的編譯器沒有對字符串進行任何合併,所以你有幾個查詢模板的實例,這也沒有幫助。
將所有條件,數據庫查詢和字符串連接因子分解爲函數,並查看需要的地方。
無論如何,您應該這樣做,因爲它會使維護和進一步擴展變得更容易。
0
開關盒的大小和Dll的大小應該沒有直接關係。除了編譯器提供的defalut優化選項外,唯一可以控制大小的方法是減少通用代碼並正確使用STL
相關問題
- 1. 是否有任何其他方式來編譯使用R api的C代碼?
- 2. 有沒有寫這個switch語句中的任何替代方法(C#3.0)
- 3. 是否有任何其他方式來適合bg使用html
- 4. 在私有方法中編寫switch語句的測試用例
- 5. 如何在R中編寫switch語句?
- 6. 在JavaScript中使用switch語句編寫if..else語句
- 7. Java問題:是否有可能在另一個switch語句中有switch語句?
- 8. 是否有任何其他方式來設置使用Python的字典值?
- 9. 是否有任何8051彙編語言C代碼轉換器
- 10. 是否有另外一種方法來編寫if語句?
- 11. Switch中的其他語句是語法錯誤?
- 12. 避免在switch語句中硬編碼
- 13. 在Obj-C中使用Switch語句
- 14. 在C代碼中的if&switch語句中的意外輸出
- 15. 是否有任何其他方式獲取Googlescript中的URL?
- 16. 是否有任何其他方式來驗證VB.net中的文本框的值
- 17. 是否有其他方法來編碼/組合這些? JS
- 18. 有沒有更簡單的方法在JavaScript中編寫此代碼(while循環和switch語句)?
- 19. 是否有任何其他方式來查找除automatarviewer以外的其他方式的元素
- 20. 的Java:是否有任何其他有效的方式來做到這一點
- 21. switch語句是否適用於工廠方法? c#
- 22. Python 2.7.10:是否有任何其他方式來檢查是否輸入是空的,而不是使用len()
- 23. 是否有任何其他編程謎語?
- 24. c switch語句
- 25. gradle.processResources中的代碼塊是否有其他任務被請求
- 26. 他們是否有任何方式來調用內部函數
- 27. 死代碼消除在switch語句
- 28. Watir是否以Ironruby(或其他任何方式)使用IronNetwork?
- 29. 是否有更高效/優雅的方式來編寫我的代碼?
- 30. C++中的switch語句
雅恰恰400個案例 – Dotnet 2011-02-15 11:30:54
您還可以請提一下,您正在採取的操作類型以及您正在檢查的值。 – 2011-02-15 11:31:09
取決於代碼的功能。 – visitor 2011-02-15 11:31:18