C ++ Primer: instrucciones de uso del compilador fuente
1. Antecedentes
Hace poco leí "C ++ imprimación versión china (5ª edición)," el primer capítulo, fuente escrita después de la fuente quiso comparar el ejemplo oficial, se encontró que la documentación está en Inglés, el registro oficial después de más o menos entender lo que es la forma de compilar y ejecutarlo fuente.
2. información relevante y el medio ambiente
C ++ imprimación oficial para descarga Fuente:
http://www.informit.com/store/c-plus-plus-primer-9780321714114
Descargar versión | explicación |
---|---|
4.7.0 GCC | Se aplica a la versión de gcc 4.7.0 y superiores |
MS Visual Studio 2012 | Adecuado para VS2012 y versiones anteriores |
GCC pre-compiladores de C ++ 11 2012 | Lo siguiente se aplica a la versión VS2012 |
Microsoft pre-compiladores de C ++ 11 | Lo siguiente se aplica a la versión de gcc 4.7.0 |
Debido a que el VS2017 equipo, por lo que se puede descargar directamente MS Visual Studio 2012. La siguiente compilar y ejecutar en el entorno de ejecución VS.
MS Visual Studio 2012 Archivo Directorio Descripción:
- Carpeta 1 a carpeta 19 fuente en nombre de C ++ capítulos primer19.
- se requiere fuente Version_test.h parte de cabecera, tal como una carpeta en Sales_data.h 1 de referencia Version_test.h.
- CompilerNotes.pdf y Visual Studio 2012 README.pdf documentación general.
- runpgms.bat 1 traverse a la carpeta de la carpeta 19, runp.bat para saltar a la carpeta interna, realizado runpgms.bat interior.
- makefile nmake y MS_makefile_template es el archivo ejecutable por defecto, compilado por todo el directorio del código fuente, y generar el archivo .exe correspondiente.
Capítulo 1 carpeta de directorio Descripción:
- cpp carpeta de datos de entrada de la sección de almacenamiento realiza datos requeridos.
- El primer capítulo es toda fuente de archivo .cpp.
- Sales_item.h forma parte del archivo de CPP para realizar los archivos de cabecera necesarios.
- runpgms.bat para realizar .exe archivo, los datos automáticamente en la carpeta de importación de datos, y muestra el resultado. Si esta carpeta sin un archivo .exe correspondiente, runpgms.bat falla.
- sección de documentación LEEME.txt
- nmake makefile es el archivo ejecutable por defecto, compilado por todo el código fuente en este directorio, y generar el archivo .exe correspondiente.
De este modo toda la carpeta con nmake makefile se ejecuta, por lo que necesita para crear compile.bat VS para llamar a la vsvars32.bat nmake para construir el entorno operativo. Al hacer doble clic compile.bat, el sistema abre CMD, todos los comandos de compilación se ejecutan en él.
Código compile.bat:
@echo off
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\vsvars32.bat"
cmd
Consejo: Usar dirección vsvars32.bat a ser modificado, vsvars32.bat Como se usa en el presente documento, la siguiente dirección:
3. compilar y ejecutar
3.1 compilar y ejecutar una sola fila
La copia y pega compile.bat al directorio en el archivo, haga doble clic para ejecutar compile.bat, la ventana emergente, introduzca comando cmd compilación. mandato de compilación de la siguiente manera, donde / EHsc empezar de excepción, / nologo prohibida reclamaciones.
// add.cpp编译成add.obj
cl /EHsc /nologo /c add.cpp
// add.obj编译成add.exe
cl /EHsc /nologo add.obj
// 一步到位,add.cpp编译成add.exe
cl /EHsc /nologo add.cpp
la compilación de varias etapas:
en una sola etapa de compilación:
compilar los resultados:
3.2 redirección de archivos
Puede ejecutar .exe, sin tener que entrar a través de la redirección de archivo, carpeta de datos directamente en el archivo como entrada, y emite el resultado del cálculo.
de datos de datos / add_item:
0-201-78345-X 3 20.00
0-201-78345-X 2 25.00
mandato de compilación:
// add_item.cpp编译成add_item.exe
cl /EHsc /nologo add_item.cpp
// 自动导入data/add_item计算结果
add_item.exe <data/add_item
Compilar los resultados:
Nota: Si los siguientes errores de compilación, la razón citada es add_item.cpp # include "Sales_item.h", mientras que Sales_item.h y referencias #include "Version_test.h". Por lo tanto, es necesario añadir "I ... /" comando de compilación, es una referencia al directorio padre, que es el directorio principal. directorio principal Version_test.h también se puede copiar en el catálogo.
El comando compilador de modificación:
cl /EHsc /nologo /I.. add_item.cpp
Compilar los resultados:
Cuando una carpeta correspondiente a todo .cpp están presentes .exe, una pluralidad de resultados de cálculo .exe archivos puede redirigir todas salida runpgms.bat. Si cmd destellaron, necesidad runpgms.bat última línea con la "pausa" para hacer una pausa.
runpgms.bat antes de la modificación:
echo on
add < data/add
add_item < data/add_item
add_item2 < data/add_item
avg_price < data/book_sales
item_io < data/book_sales
occurs < data/occurs
mysum < data/mysum
for %%i in ( for_ex forcount main_only whilecount) do %%i
runpgms.bat modificado:
echo on
add < data/add
add_item < data/add_item
add_item2 < data/add_item
avg_price < data/book_sales
item_io < data/book_sales
occurs < data/occurs
mysum < data/mysum
for %%i in ( for_ex forcount main_only whilecount) do %%i
pause
Más de 3,3 compilar y ejecutar el archivo
Si un archivo que compilar y ejecutar un archivo demasiado problema, puede utilizar makefile plazo compile.bat, compilar todo el código fuente para lograr los tres comandos siguientes, la liquidación de .obj y .exe.
// 编译目录下所有源码
nmake
// 删除文件夹下所有.obj
nmake clean
// 删除文件夹下所有.obj和.exe
namke clobber
Nota: Cuando se compila y ejecuta inits.cpp en la carpeta de la sección 2, habrá "C2732 de error: Enlace especificación y" error lround "especificación temprana de conflictos", que Version_test.h necesidad de la "#ifndef LROUND" modificado para "LROUND #ifdef".
Antes de la modificación:
#ifndef LROUND
inline long lround(double d)
{
return (d >= 0) ? long(d + 0.5) : long(d - 0.5);
}
#endif
modificado:
// #ifndef LROUND
#ifdef LROUND
inline long lround(double d)
{
return (d >= 0) ? long(d + 0.5) : long(d - 0.5);
}
#endif
4. Resumen
- Compilador medio ambiente no es importante, el uso gcc, g ++ o lata cl, es importante escribir el código y el proceso de compilación.
- Aprender a redirección de archivos y el uso makefile, y hacer que la programación sea más eficiente.