utility C2988 unrecognizable template declaration/definition

今天遇到一個 C2988 的問題,錯誤在 utility 這個 VC 的 include 檔,內有一個名為 swap 的 template 出現 unrecognizable template declaration/definition。後來找到的原因在於原本 project 內已有以下定義:

#ifndef swap
#define swap(XXXXXXXXXX)
#endif

重複 define 的結果,造成 utility 裡頭的 template 宣告出問題。

一開始的解法我是在 include 自己的 def 之後,再 #undef swap。但是這樣沒有解決問題,所以後來我直接將自己的 def 整個拿掉,就解掉了。

留言

熱門文章