Ste*_*ehl 2 c++ templates objective-c
我正在尝试将包含相当多模板的C++库包含到目标C应用程序中.
它似乎永久地阻塞了共享库中的一些内联语句:
template <class T>
inline T MIN(T a, T b) { return a > b ? b : a; }
template <class T>
inline T MAX(T a, T b) { return a > b ? a : b; }
Run Code Online (Sandbox Code Playgroud)
产出输出:
expected unqualified-id before '{' token
expected `)' before '{' token
Run Code Online (Sandbox Code Playgroud)
我正在编译选项.
g++ -x objective-c++ -Wall -O3 -I. -c demod_gui.m -o demod_gui
Run Code Online (Sandbox Code Playgroud)
所有其他模板似乎编译得很好,任何想法在这里可能是错的?在此先感谢您的帮助.
已经有宏MIN并MAX定义了Foundation/NSObjCRuntime.h.
#if !defined(MIN)
#define MIN(A,B) ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __a : __b; })
#endif
#if !defined(MAX)
#define MAX(A,B) ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __b : __a; })
#endif
Run Code Online (Sandbox Code Playgroud)
所以你的定义变成了
template <class T>
inline T ({ __typeof__(T a) __a = (T a); __typeof__(T b) __b = (T b); __a < __b ? __a : __b; }) { return a > b ? b : a; }
Run Code Online (Sandbox Code Playgroud)
这显然是无效的.
为什么不使用std::max和std::min?
| 归档时间: |
|
| 查看次数: |
178 次 |
| 最近记录: |