Comstackndo un progtwig en C ++ con gcc

Pregunta: ¿Cómo comstackr un progtwig en C ++ con el comstackdor gcc?

info.c:

#include using std::cout; using std::endl; int main() { #ifdef __cplusplus cout << "C++ compiler in use and version is " << __cplusplus << endl; #endif cout <<"Version is " << __STDC_VERSION__ << endl; cout << "Hi" << __FILE__ << __LINE__ << endl; } 

y cuando bash comstackr info.c

$ gcc info.C

 Undefined first referenced symbol in file cout /var/tmp/ccPxLN2a.o endl(ostream &) /var/tmp/ccPxLN2a.o ostream::operator<<(ostream &(*)(ostream &))/var/tmp/ccPxLN2a.o ostream::operator<<(int) /var/tmp/ccPxLN2a.o ostream::operator<<(long) /var/tmp/ccPxLN2a.o ostream::operator<<(char const *) /var/tmp/ccPxLN2a.o ld: fatal: Symbol referencing errors. No output written to a.out collect2: ld returned 1 exit status 

¿No es capaz el comstackdor gcc de comstackr progtwigs C ++? En una nota relacionada, ¿cuál es la diferencia entre gcc y g ++. Gracias,

gcc realmente puede comstackr el código de C ++ bien. Los errores que recibió son errores del enlazador , no compiler errors.

Las probabilidades son que si cambia la línea de comstackción es la siguiente:

 gcc info.C -lstdc++ 

lo que hace que se vincule a la biblioteca estándar de C ++, entonces funcionará perfectamente.

Sin embargo, deberías hacerte la vida más fácil y usar g ++.


EDITAR:

Rup lo dice mejor en su comentario a otra respuesta:

[…] gcc seleccionará el comstackdor de fondo correcto basado en la extensión de archivo (es decir, comstackrá un .c como C y un .cc como C ++) y vinculará los binarios solo con las bibliotecas de ayuda estándar C y GCC de forma predeterminada independientemente de idiomas de entrada; g ++ también seleccionará el back-end correcto basado en la extensión excepto que creo que comstack todas las fonts C como C ++ (es decir, comstack tanto .c como .cc como C ++) e incluye libstdc ++ en su paso de enlace independientemente de los idiomas de entrada.

Si le da al código una extensión .c el comstackdor piensa que es código C, no C ++. Y el controlador del comstackdor C ++ se llama g ++; si usa el controlador gcc, tendrá problemas con los enlazadores, ya que las bibliotecas estándar de C ++ no se vincularán de forma predeterminada. Entonces quieres:

 g++ myprog.cpp 

Y ni siquiera considere usar una extensión .C en mayúscula, a menos que nunca quiera portar su código, y está preparado para ser odiado por aquellos con quienes trabaja.

usa g++ lugar de gcc .

La diferencia entre gcc y g ++ son:

  gcc | g++ compiles c source | compiles c++ source 

Usa g ++ en lugar de gcc para comstackr tu fuente de c ++.

De forma predeterminada, gcc selecciona el idioma según la extensión del archivo, pero puede forzar a gcc para seleccionar un backend de idioma diferente con la opción -x así:

 gcc -x c++ 

Se detallan más opciones en la página del manual de gcc en “Opciones que controlan el tipo de salida”. Ver, por ejemplo, http://linux.die.net/man/1/gcc (buscar en la página el texto -x language ).

Esta función es muy útil en casos donde gcc no puede adivinar el idioma usando una extensión de archivo, por ejemplo, si está generando código y alimentándolo a gcc vía stdin.

Funciono bien para mi. Solo un código de línea en cmd.

Primero, confirme que ha instalado el comstackdor gcc (para c) o g ++ (para c ++).

En cmd para el tipo de gcc:

gcc –version

en cmd para el tipo de g ++:

g ++ –versión

Si está instalado, entonces proceda.

Ahora, comstack tu .c o .cpp usando cmd

para la syntax .c :

gcc -o exe_filename yourfilename.c

Ejemplo:

gcc -o myfile myfile.c

Aquí exe_filename (miarchivo en el ejemplo) es el nombre de tu archivo .exe que deseas producir después de la comstackción (Nota: no he puesto ninguna extensión aquí). Y yourfilename.c (myfile.c en el ejemplo) es su archivo fuente que tiene la extensión .c.

Ahora vaya a la carpeta que contiene su archivo .c, aquí encontrará un archivo con la extensión .exe. Solo ábrelo. Viva..

Para la syntax .cpp :

g ++ -o exe_filename yourfilename.cpp

Después de esto, el proceso es el mismo que para .c.

Si recuerdo correctamente, gcc determina el tipo de archivo del sufijo. Entonces, hazlo foo.cc y debería funcionar.

Y, para responder a su otra pregunta, esa es la diferencia entre “gcc” y “g ++”. gcc es una interfaz que elige el comstackdor correcto.