Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 包括模板化的C++;在目标C中_C++_Objective C_Templates - Fatal编程技术网

C++ 包括模板化的C++;在目标C中

C++ 包括模板化的C++;在目标C中,c++,objective-c,templates,C++,Objective C,Templates,我尝试将一个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; } 我正在使用选项进行编译 g++ -x objective-c++ -Wall -O

我尝试将一个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; }
我正在使用选项进行编译

g++ -x objective-c++ -Wall -O3 -I. -c demod_gui.m -o demod_gui

所有其他模板似乎都编译得很好,你知道这里有什么问题吗?提前感谢您的帮助。

Foundation/NSObjCRuntime.h
中已经定义了宏
MIN
MAX

#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
#如果!已定义(最小值)
#定义最小值(A,B)({uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuub=(B);\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuub=(B)})
#恩迪夫
#如果!已定义(最大值)
#定义MAX(A,B)({{uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuub=(B)}
#恩迪夫
所以你的定义变成了

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; }
模板
内联T({uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuua=(ta);{uuuuuuuuuuuuuuuuuuuub=(tb);{uuuuuuuuuu ab?b:a;}
这显然是无效的


为什么不使用和
std::min

出于好奇,为什么共享库定义自己的min和max函数?这些都包含在我提到的
中,
MIN
MAX
可能是在其中一个objc++头中定义的。如果是这样的话,那么它可能会破坏你的模板定义。当我发表评论时,这个答案并不存在!我发誓-_-这正是问题所在,添加了一个
\ifndef\uuu OBJC\uuu
来修复共享库。
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; }