我需要編譯一個C++(98.我不能遷移到11)代碼到一個mex文件。Xcode 5.1 C++ 98 char16_t
不幸的是,在升級到Xcode 5.1之後(它也更新爲Clang 3.4版本),我無法編譯代碼。
這是和在這裏相同的問題:MEX compile error: unknown type name 'char16_t' 不幸的是,接受的答案是編譯與我不能做的c + + 11支持。
在鏘的源代碼閱讀,我發現這幾行:
// In C11 these are environment macros. In C++11 they are only defined
// as part of <cuchar>. To prevent breakage when mixing C and C++
// code, define these macros unconditionally. We can define them
// unconditionally, as Clang always uses UTF-16 and UTF-32 for 16-bit
// and 32-bit character literals.
Builder.defineMacro("__STDC_UTF_16__", "1");
Builder.defineMacro("__STDC_UTF_32__", "1");
現在..我不知道爲什麼,如果他們定義宏,他們沒有定義的類型char16_t。 而且還......我不能包括(找不到文件)或者cuchar
(C++ 11)或uchar.h
(C11)
如何解決這個問題的一些想法?
編輯:我想了解這是否是一個叮噹(我必須表示它)的錯誤。 根據C++ 11標準(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2018.html),應在頭文件cuchar
中定義marco __STDC_UTF_16__
。但是我找不到那個文件。因此,我期望這個宏是未定義的。我認爲MEX包含文件依賴於這個事實。
你可以看看我的編輯? – Francesco
btw:我解決了在編譯時定義'char16_t'(因爲matlab查找該變量) – Francesco
我不知道它是否是一個錯誤,但有一點可以肯定的是'char16_t'是一個C++ 11功能,而不是可以使用較早的C++標準。所以我認爲宏只是依賴於C++ 98中的編譯器實現。 – kyamagu