Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.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++ 如何通过宏检查GNU libstdc++;使用了什么?_C++_Stl - Fatal编程技术网

C++ 如何通过宏检查GNU libstdc++;使用了什么?

C++ 如何通过宏检查GNU libstdc++;使用了什么?,c++,stl,C++,Stl,如何通过宏检查是否使用了(GNU GCC)libstdc++STL实现?可能吗?我想让它在GCC和Clang中工作 对于Linux上的C++11,它可能是唯一的选择(或者是吗?)。(STLport没有C++ 11的支持,AFAIK),在MaLoX上,LLVC++ +STL更可能,如果你使用Clang(也可能是GCC,不确定)。你可以检查 > GLYBCXXXX< < /C> >(或(cstdef是一个不错的选择): #包括 #如果已定义(uuu GLIBCXX_uuuuuu)| |已定义(uuu

如何通过宏检查是否使用了(GNU GCC)libstdc++STL实现?可能吗?我想让它在GCC和Clang中工作


对于Linux上的C++11,它可能是唯一的选择(或者是吗?)。(STLport没有C++ 11的支持,AFAIK),在MaLoX上,LLVC++ +STL更可能,如果你使用Clang(也可能是GCC,不确定)。你可以检查<代码> > GLYBCXXXX< < /C> >(或<代码>(
cstdef
是一个不错的选择):

#包括
#如果已定义(uuu GLIBCXX_uuuuuu)| |已定义(uuu GLIBCPP_uuu)
/*使用GNU GCC libstdc++,也使用其STL实现*/
#恩迪夫
请在此处阅读更多信息:


在包含一些页眉之后,尝试< C++ > IfDEF,GLUBCXXXX< < /CUT>。为什么?如果使用C++标准库的功能,它应该是标准的,而不是实现的。但是我想我需要先从STL定义一些东西?还是编译器设置这个宏?什么是得到宏的好小的??艾伯特:是的,你是NE。ED在检查宏之前包含一些库头。<代码> > GLYBCXXXX<宏定义为:当代码< >包含< /C> >,但它是依赖于实现的,因此它可以在不同的实现下提供语法错误。+版本,我将与<代码>包含< <代码> >(更新答案以反映这一点)@艾伯特更好:但是<>代码>包含< /Cord>(更新答案以反映这一点)我认为说“所以使用它的STL实现”几乎毫无意义。OP想要看到的是使用C++标准库的实现,而简单地说“使用GNU GCC libstdc++”是可以的。提到“STL实现”是没有帮助的,因为这意味着你谈论的是与标准库无关的东西,好像使用GCC+libstdc+++SGI STL或其他组合是现实的。当你指的是标准库时,说的是标准库,而不是“STL”“@Jonathanly我完全同意你的看法。无论如何,我把关于STL的评论放在那里,因为OP在他的问题中反复提到STL,并用#STL标记它。
#include <cstddef>
#if defined(__GLIBCXX__) || defined(__GLIBCPP__)
  /* Using GNU GCC libstdc++, so using also its STL implementation */ 
#endif