Tag: libc ++

第一个“C”在“calloc”中代表什么?

一个学生问这个问题,我不知道。 猜测包括:“计数”,“清除”,“分块”,“完整”,… 标准库文档没有说明它的含义,也没有类似的命名函数来指示模式。 有谁知道实际的词源,也许有一个权威的参考来支持它?

在linux下libcxxabi有意义吗? 有什么好处?

我试图确定是否build立和使用linux下的llvm项目的libcxxabi是有道理的。 我的libcxxabi链接到 ldd libc++abi.so.1.0 linux-vdso.so.1 => (0x00007fff2e0db000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fd658f0d000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fd658d05000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd65893c000) libc++.so.1 => /path/where/clang/is // edited /lib64/ld-linux-x86-64.so.2 (0x00007fd6593ab000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd658465000) 所以它使用gcc_s库,GNU librt,唯一真正的区别是它使用libc++不是libstdc++ ,但是这真的有多好? 鉴于abi图书馆的关键作用,我应该在这样的平台下去找libcxxabi ? 我的问题不是如何build立这个,或者如果这能够工作,但如果这是一个好主意C ++明智 ,我可能得到什么样的好处,或者如果你已经使用这个好处,你会得到什么样的好处。

编译没有libc

我想在没有(g)libc的情况下编译我的C代码。 我怎样才能停用它,哪些function依赖于它? 我尝试了-nostdlib,但没有帮助:代码是可编译的并运行,但是我仍然可以在我的可执行文件的hexdump中findlibc的名称。

make_shared真的比新的更有效率吗?

我正在用C ++ 11试验shared_ptr和make_shared ,并编写了一个小玩具的例子来看看调用make_shared时实际发生了什么。 作为基础结构,我使用了llvm / clang 3.0以及XCode4中的llvm std c ++库。 class Object { public: Object(const string& str) { cout << "Constructor " << str << endl; } Object() { cout << "Default constructor" << endl; } ~Object() { cout << "Destructor" << endl; } Object(const Object& rhs) { cout << "Copy constructor…" << endl; […]

在C中定义ptrdiff_t在哪里?

在C中定义ptrdiff_t在哪里? 如果不重要,我怎样才能使这种types在Linux上的GCC可见?

snprintf()总是空终止?

snprintf总是空终止目标缓冲区? 换句话说,这是否足够: char dst[10]; snprintf(dst, sizeof (dst), "blah %s", somestr); 还是你必须这样做,如果somestr足够长? char dst[10]; somestr[sizeof (dst) – 1] = '\0'; snprintf(dst, sizeof (dst) – 1, "blah %s", somestr); 我对这个标准所说的和一些stream行的libc可能做的事情都不感兴趣,这不是标准的行为。

gcc:为什么需要-lm标志来链接math库?

我刚刚发现gcc需要-lm标志来编译引用math库函数的程序。 我想知道为什么在编译包含其他库(如时间库)的程序时不需要显式链接标志。 如果我编写了一个调用time()函数的程序,即使没有链接选项,也可以毫无问题地进行编译。 但是,如果没有-lm标志,涉及math库的程序就无法正常工作。 任何人都可以解释这种行为背后的原因吗? 谢谢你的时间。

我应该使用libc ++还是libstdc ++?

我正在使用c / c ++开发osx和linux的命令行界面可执行文件。 该项目将链接到opencv。 我应该使用libc ++还是libstdc ++?

使用libstdc ++编译的库和clang ++ -stdlib = libc ++

我在Mac OS X(10.8.2)下使用C ++,最近我想出了使用C ++ 11特性的必要性,这些特性可以通过使用libc ++ stdlib的clang ++编译器获得。 不过,我还需要使用一些遗留库,编译并链接到libstdc ++(来自MacPorts)。 在这样做的时候,我得到了链接错误,因为使用std::string的遗留库的头文件需要根据std::__1::basic_string (即std::string的libc ++实现)而不是std::basic_string实现。 有没有办法在开发中混合两个库(例如,使用一些预处理器标志?)

硬浮点数和软浮点数有什么区别?

当我用我的交叉工具链编译C代码时,链接器打印警告的页面,说我的可执行文件使用硬浮动,但我的libc使用软浮动。 有什么不同?