gcc(4.8.1)和clang(3.4)編譯我的C++程序,它使用std::log2(x)
。這是否符合標準?std :: log2()是擴展還是C++標準?
0
A
回答
4
1
如果您使用的是較早的C++編譯器不具有此功能,您可以使用log(x)/log(2.0)
。
+0
是的,我知道,這通常會調用'std :: log()'兩次。 – Walter
+1
@Walter因爲它永遠不會改變,所以''log(2.0)''你總是可以使用一個硬編碼的常量'0.693147180559945309 '應該工作。 –
相關問題
- 1. 是否可以擴展標準UI
- 2. FIREFOX:插件還是擴展?
- 3. 擴展空間std與回遷類型和新的C++標準
- 4. 錯誤:'log2'不是'std'的成員
- 5. 錯誤:'log2'不是'std'的成員
- 6. asp.net的C#擴展,放置擴展文件的標準做法是什麼?
- 7. phplivex是擴展還是插件?
- 8. 標準差的python c擴展
- 9. 等效標準還是HQL?
- 10. C++ 11:將std :: is_pointer擴展到std :: shared_ptr
- 11. syslog是日誌標準還是協議標準?
- 12. C標準庫是靜態庫還是動態庫?
- 13. Java Swing:實現TableModel還是擴展AbstractTableModel?
- 14. 我應該擴展Controller還是Create Helper?
- 15. Ruby mixin:擴展還是包含?
- 16. C++是否在std :: min和std :: max下標準化std :: optional的行爲?
- 17. 擴展標準UI5控件
- 18. 擴展std :: list
- 19. 什麼是標記擴展?
- 20. 這是一個標準庫錯誤,還是我的?
- 21. 是否所有類型都擴展了在C++ 11標準中實現FENV所需的std :: is_floating_point?
- 22. Devexpress mvc擴展。無論這些擴展是服務器端還是客戶端?
- 23. 「master」是git中的標準分支名稱,還是僅僅是標準做法?
- 24. Eiffel:沒有字段的擴展類是`=`還是不是?
- 25. 標準庫中是否存在標準std :: endl的等價物?
- 26. 是堆棧展開與C++標準保證的異常?
- 27. 模板模板參數是模板參數的擴展還是標準的一部分?
- 28. Hibernate的標準,連接還是
- 29. SQL:INSERT + SET - 標準還是MySQL特定?
- 30. 是否有建議將std :: bin添加到C++標準中?
爲什麼不應該這樣?谷歌搜索這個功能顯示[它是C++標準庫的一部分](http://en.cppreference.com/w/cpp/numeric/math/log2)自C++ 11以來。如果它不是標準庫的一部分,將它添加到'std'命名空間是未定義的行爲。換句話說,沒有像標準庫的「擴展」那樣的東西,說起'std'命名空間。 – leemes
@leemes符合的實現不允許將名稱添加到任何標準頭文件中的「std」名稱空間。一個簡單的原因是,如果'foo'沒有被定義爲標準庫的一部分,用戶可以在包含標準頭之前將'foo'定義爲宏。如果頭文件試圖將'foo'定義爲(例如)一個函數,宏將被擴展,並且一個有效的程序將被拒絕。 – hvd
@ hvd我知道...我不知道你爲什麼這麼說。您是否想將我的評論添加進去,或者您誤解了我想說的內容? ;)我的觀點是:由於不允許將內容添加到'std',因此不存在對標準庫的「擴展」,比如在添加C++ 11之前的'log2'。 – leemes