C/Visual C - Como compilar en C con Visual Studio 6

 
Vista:

Como compilar en C con Visual Studio 6

Publicado por Dann Winter (2 intervenciones) el 29/11/2004 05:19:28
Hola
Alguien me puede decir como compilar programas en C con visual Studio? No C++, aclaro

Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como compilar en C con Visual Studio 6

Publicado por fernando.gomez (1603 intervenciones) el 29/11/2004 16:52:11
Mira, en la definición de las librerías, VC6 emplea un símbolo cuando tiene que diferenciar entre C y C++, que se llama __cplusplus. Este se define por default. Para que trabajes directamente como en C, dejando fuera el funcionamiento de C++, tendrías que hacer algo así:

#undefine __cplusplus

en los archivos de cabecera. Sin embargo, esto te sirve para las funciones sólo. Por ejemplo, este código:

void func()
{
// cualquier cosa
}

compilaría, aunque en realidad para ser estrictos en C, tendría que ser:

void func(void)
{
}

En fin, es lo más cerca de C que se puede estar en VC6.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como compilar en C con Visual Studio 6

Publicado por Dann WInter (2 intervenciones) el 30/11/2004 04:04:47
Muchas gracias por tu ayuda Fernando. Te lo agradezco.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como compilar en C con Visual Studio 6

Publicado por El Mogur (202 intervenciones) el 24/12/2004 21:34:38
¿Y si el fichero tiene extensión .c, no se compila en C directamente?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como compilar en C con Visual Studio 6

Publicado por fernando.gomez (1603 intervenciones) el 28/12/2004 00:29:02
No, claro. El nombre del fichero realmente es una convención, pero no implica algún contenido de archivo específico.

De entrada, el compilador MSVC6 es de C++, no de C. Sin embargo Windows está hecho en C, por lo que Microsoft incluyó esta macro para hacer la diferencia (un ejemplo es en la tecnología COM, donde es diferente hacer una interfaz en C++ que en C, y por ello se requieren ciertas diferencias -vtables, etc). Por eso es que es tan sucio, a nivel de una macro en vez de que el compilador lo distinga (como pasa con DevC, por ejemplo). Además, no hay intenciones algunas de que esto cambie en versiones posteriores (VS2002 y VS2003 siguen el mismo modelo).

Saludos.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como compilar en C con Visual Studio 6

Publicado por El Mogur (202 intervenciones) el 28/12/2004 12:33:50
Hola Fernando; creo que te estás confundiendo.

Cuando dije que igual con la extensión valía, lo dije porque Borland C++ Builder lo hace (heredado de Turbo C++ que también lo hacía). Está claro que las extensiones de los ficheros son una "convención", pero esa convención se utiliza, al menos en VC6.0. De hecho, tú puedes incluir en un proyecto en VC 6.0 un fichero con extensión .txt, y VC6 _no_ lo compila, aunque esté en el apartado de "Source files" del proyecto. Esto que puede no preocupar a nadie, es un problema cuando tienes un código fuente con extensión .cc, utilizado en algunos sistemas operativos en sustitución del .cpp, y quieres compilarlo en VC6 (y que, por cierto, te obliga a instalar un "parche" que añade una entrada en el registro de Windows).

Si añades un fichero con extensión .c a un proyecto, VC6 lo toma como un fichero de código C, y no de código C++, con lo cual, si pones un "class", no compilará, por mucho que definas el símbolo "__cplusplus". Y eso es porque el símbolo "__cplusplus" no sirve para indicar al compilador cómo hacer su trabajo.

Todo tiene que ver con la diferencia de traducción de los símbolos en el código objeto cuando se compila en C y cuando se compila en C++ (debido a la sobrecarga de C++). El símbolo __cplusplus está definido cuando el compilador está compilando en C++, y éste símbolo se puede (debe) aprovechar en los ficheros de cabecera de las librerías cuando éstas están compiladas en C, y van a ser utilizadas desde C++, con el típico código:

#ifdef __cplusplus
extern "C" {
#endif
// ...
/%2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como compilar en C con Visual Studio 6

Publicado por Oscar Medina (114 intervenciones) el 28/12/2004 14:29:05
Lo que decis es cierto, Visual Studio toma al cpp o al cc como C++ y a los .c (ojo tambien el .C!!) como codigo C. Para que compile en C sin que se fije en que tipo de extension tiene el archivo tendrias que ponerle como parametro al compilador /Tc y para C++ /Tp.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como compilar en C con Visual Studio 6

Publicado por El Mogur (202 intervenciones) el 28/12/2004 15:36:01
Gracias por la aclaración de las opciones /Tc y /Tp. ¿Sabes si desde el GUI se pueden indicar, marcando alguna opción? (sin ponerlo directamente en la "línea de comandos"...)

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como compilar en C con Visual Studio 6

Publicado por fernando.gomez (1603 intervenciones) el 28/12/2004 16:46:04
Vaya pues, qué bueno que me aclaran el asunto. Les comento, yo tengo proyectos donde tengo mezclado indistintamente ficheros con terminación C y CPP, y en lo que a mí concierne, todos los ficheros se compilan como C++. Además, tengo una duda. ¿Hace diferencia entonces entre H y HPP? Hasta donde yo veo no, porque además, los wizards generan el código con encabezados H. Supongo entonces que será por los switches en el compilador. Voy a probar, a ver que pasa. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como compilar en C con Visual Studio 6

Publicado por El Mogur (202 intervenciones) el 29/12/2004 15:05:00
Buenas,

Sí, en teoría no hay diferencia entre los .h y los .hpp. En realidad, la historia utilizar las extensiones para que el compilador sepa si compilarlo como C o como C++, no tiene sentido con las cabeceras, porque el compilador no compila uno de estos ficheros por él mismo, sino que lo lee al estar incluido en otro fichero C o CPP.
Por lo tanto, es el fichero fuente "origen" o "responsable" de la inclusión de ese archivo de cabecera el que marca cómo se compila. De ahí que exista el símbolo __cplusplus definido cuando se está compilando en C++ para que el fichero de cabecera pueda hacer "algo" al respecto (usar los extern "C"); de hecho, lo normal es utilizar ese símbolo en los ficheros de cabecera, no en los de implementación.

Ahora, me pareció leer una vez que en VC, los ficheros .HPP no pueden ser precompilados... Pero vamos, que yo de eso ni idea, que no lo he probado ni nada.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar