代码之家  ›  专栏  ›  技术社区  ›  sunmat

为特定变量禁用\u GLIBCXX \u DEBUG的效果

c++
  •  1
  • sunmat  · 技术社区  · 7 年前

    -D_GLIBCXX_DEBUG ,是否有方法在其源代码中指定 std::vector 我不想要这个类的“debug”版本,而是想要“normal”版本?

    我有一个C库(我称之为 libA )和C++库(我将调用 libB -D\u GLIBCXX\u调试 . 主程序(用 )必须调用函数 利巴 std::vector<char>* 转化为 void* . 伦敦银行 给定 把它扔回一个 使用它(哦,通过C层传递C++数据的乐趣……)。因为主程序是用 但是 不是吗,是的 std::vector<char> 伦敦银行 实际上有不同的实现,这会导致错误。

    2 回复  |  直到 7 年前
        1
  •  1
  •   MSalters    7 年前

    创建一个 void* createNDebugVec(char const* begin, char const* end); 函数,并将其放入自己的.cpp文件中。在.cpp文件中,显式地 #undef GLIBCXX_DEBUG std::vector 并将其返回到 void* . 你可能需要一个匹配的 void destroyNDebugVec(void*); .

    请注意 void* createNDebugVec(std::vector<char> const& src);

        2
  •  1
  •   PilouPili    7 年前

    你可以 #undef _GLIBCXX_DEBUG 使用前 #include<vector>

    为了确保我会声明一个非模板类继承 std::vector<char> 在其中使用 #未定义\u GLIBCXX \u调试