我错误地使用了此命令,该命令在链接步骤中失败:

$ clang -std=c++11 -stdlib=libc++ myInputFile.cpp

Can anyone explain why clang provides a C++ language option, and why it fails to link?为什么选项-x c++-std=c++11不能实现与clang++相同的功能?谢谢

推荐答案

从技术上讲,名为clangclang++的程序都不是编译器:它们都是drivers,它们分析输入参数并确定使用什么命令行参数在哪些文件上调用哪些编译器/汇编器/链接器.两者之间的唯一区别是,如果C标准库执行链接,则仅针对C标准库的clang个链接,而针对C++和C标准库的clang++个链接.

-x=<language>选项覆盖驱动程序用于确定源文件语言的试探法,它指示驱动程序调用编译器<language>.

-std=<dialect>选项 Select 要使用的特定语言的方言.如果需要确保C++程序是可移植到旧的C++ 98编译器,则可以用-std=c++98编译它.-std只适用于目标语言:它不会try 编译如C++或C++的汇编程序或java,而只是驱动程序认为是C++的源文件.

简而言之,有两个不同的驱动程序可以方便地 Select 要链接的库.编译C++但不链接到C++标准库有合理的用例.

C++相关问答推荐

Zig将std.os.argv转换为C类型argv

segfault在C中使用getline()函数

我编译了一个新的c程序,并收到以下错误

C:fopen是如何实现二进制模式和文本模式的?

如何调试LD_PRELOAD库中的构造函数?

ESP32在vTaskDelay上崩溃

Can函数指针指向C++中具有不同参数连续性的函数

模拟shell并运行.sh文件

C中函数类型的前向声明

如何使用指向 struct 数组的指针并访问数组中特定索引处的 struct

如何计算打印二叉搜索树时每行所需的空间?

如何编写一个for循环来计算C中各项的总和?

在运行时判断C/C++指针是否指向只读内存(在Linux操作系统中)

用于计算位数和的递归C函数

向左移位3如何得到以字节为单位的位数?

当用C打印过多的';\n';时输出不正确

函数的typedef是标准 C 语法吗?它与函数指针的typedef有何不同?

使用 _Atomic float 时,MSVC 编译的代码会命中调试断言

添加/删除链表中的第一个元素

(GNU+Linux) 多个线程同时调用malloc()