Después de tanto trabajar ya encontramos el arreglo de esta pregunta que algunos de nuestros lectores de nuestro espacio han presentado. Si tienes algún dato que compartir no dudes en compartir tu conocimiento.
Solución:
El comando clang
es para C, y el comando clang++
es para C ++.
No sé por qué no hay una respuesta que aborde directamente el problema. Cuando desee compilar un programa C ++, es mejor utilizar clang++
. Por ejemplo, lo siguiente me funciona:
clang++ -Wall -std=c++11 test.cc -o test
Si se compila correctamente, producirá el archivo ejecutable test
, y puede ejecutar el archivo usando ./test
.
O simplemente puede usar clang++ test.cc
para compilar el programa. Producirá un archivo ejecutable predeterminado llamado a.out
. Usar ./a.out
para ejecutar el archivo.
Todo el proceso es muy parecido a g ++ si está familiarizado con g ++. Consulte esta publicación para comprobar qué advertencias se incluyen con -Wall
opción. Esta página muestra una lista de indicadores de diagnóstico compatibles con Clang.
Una nota sobre el uso clang -x c++
: Kim Gräsman dice que también puede usar
clang -x c++
para compilar programas cpp, pero eso puede no ser true. Por ejemplo, tengo un programa simple a continuación:
#include
#include
int main()
/* std::vector v = 1, 2, 3, 4, 5; */
std::vector v(10, 5);
int sum = 0;
for (int i = 0; i < v.size(); i++)
sum += v[i]*2;
std::cout << "sum is " << sum << std::endl;
return 0;
clang++ test.cc -o test
se compilará correctamente, pero clang -x c++
no lo hará, mostrando muchos errores de referencias indefinidas. Entonces supongo que no son exactamente equivalentes. Es mejor usar clang++
en vez de clang -x c++
al compilar programas en C ++ para evitar problemas adicionales.
- versión clang: 11.0.0
- Plataforma: Ubuntu 16.04
Además, para la posteridad, Clang (como GCC) acepta la -x
cambie para establecer el idioma de los archivos de entrada, por ejemplo,
$ clang -x c++ some_random_file.txt
Este hilo de la lista de correo explica la diferencia entre clang
y clang++
bien: Diferencia entre clang y clang ++
Al final de la web puedes encontrar las explicaciones de otros usuarios, tú de igual manera tienes la opción de insertar el tuyo si lo crees conveniente.