Parámetros comunes de #pragma
El parámetro Mensaje genera un mensaje en la ventana de salida de compilación, lo cual es muy importante para el control de la información del código fuente. El uso es el siguiente: #Cuando el compilador encuentre esta instrucción, imprimirá el texto del mensaje en la ventana de salida de la compilación.
Cuando definimos una gran cantidad de macros en el programa para controlar la versión del código fuente, es posible que nos olvidemos de configurar estas macros correctamente. En este caso, podemos usar esta directiva para verificar en tiempo de compilación. Supongamos que queremos determinar si la macro _X86 está definida en alguna parte del código fuente, podemos usar el siguiente método #ifdef?_X86#pragma?message(_X86?macro?activated!)#endif Cuando definimos la macro _X86, La información del programa "_X86 Macro" se mostrará en la ventana de salida de la compilación durante la compilación. Una vez completada la compilación, la aplicación mostrará "¡Macro _X86 activada!" en la ventana de salida de la compilación. No nos rascamos la cabeza porque no podemos recordar una macro particular que definimos. (
Simplemente agregue esta directiva al principio del archivo de encabezado para garantizar la compilación una vez. De hecho, esta directiva ya está incluida en VC6, pero no se usa ampliamente por razones de compatibilidad.
#pragma una vez depende de la compilación, lo que significa que funciona con ese compilador, pero no necesariamente con otros compiladores, es decir, no es portátil, pero básicamente ahora está definido por todos los compiladores
#. ifndef, #define, #endif están relacionados con C++, son definiciones de macros en C++ que se utilizan para evitar la compilación múltiple de archivos. Por lo tanto, es compatible con C++. Es válido en todos los compiladores de lenguajes. para ser multiplataforma, es mejor usar este método #pragma hdrstop para indicar que el archivo de encabezado está precompilado hasta este punto, pero no el archivo de encabezado después de la compilación. bcb puede precompilar el archivo de encabezado para acelerar la vinculación. puede ocupar demasiado espacio en disco si todos los archivos de encabezado están precompilados, por lo que puede usar esta opción para excluir algunos archivos de encabezado.
A veces, existen dependencias entre unidades, por ejemplo, la unidad A depende de la unidad. B, por lo que la unidad B debe compilarse antes que la unidad A. Puede usar #pragma startup para especificar la prioridad de compilación si usa el paquete #pragma (smart_init), BCB se compilará en orden de prioridad. ) Esta instrucción agregará registros de comentarios en el archivo objeto o archivo ejecutable.
Las palabras clave lib de uso común pueden ayudarnos a conectarnos.
Cada compilador puede usar la directiva #pragma. para activar o desactivar ciertas funciones de compilación admitidas por ese compilador: Por ejemplo, optimización de bucle: #pragma?loop_opt(on)// activar #pragma?loop_opt(off)//terminar A veces, ciertas funciones en su programa harán que el compilador emitir advertencias que conoce pero que desea ignorar, como "El parámetro xxx nunca se usó en la función xxx", como esta: #pragma? warn-100/Turnoffthewarningmessageforwarning#100intinsert_record(REC*r){//* functionbody*/} #pragma? functionbody*/}#pragma?warn+100//Turnoffthewarningmessageforwarning#100backon La función genera un mensaje de advertencia con un código característico único de 100, para finalizar temporalmente la función
Cada compilador implementa #pragma. de manera diferente, y lo que funciona en un compilador casi nunca funcionará en otro. Esto se puede ver en la documentación del compilador.
#pragma?pack(n) y #pragm?apop()struct?sample{char?Si el tamaño del miembro a es menor que n, extienda a al tamaño de n;
Si el tamaño de a es mayor que n, se utiliza el tamaño de a;
Por lo tanto, el tamaño de la estructura anterior es de 16 bytes.
Agregue #pragma pack(1),sizeof(sample)=9 bytes a la estructura de muestra;
(Otra nota: cuando n es mayor que el tamaño del miembro más grande en la estructura de ejemplo, n toma el tamaño del miembro más grande. 1, #pragma data_seg() se usa generalmente en archivos DLL. Eso es decir, en Definir un segmento de datos llamado ****disfrutado en la DLL La clave es: las variables globales en este segmento de datos pueden ser disfrutadas por múltiples procesos; de lo contrario, las variables globales en la DLL no pueden ser disfrutadas por múltiples procesos. *disfrutado.
2. Los datos compartidos deben inicializarse; de lo contrario, el compilador de Microsoft colocará datos no inicializados en la sección .BSS, lo que provocará que los datos compartidos entre múltiples procesos fallen. #pragma?data_seg(MyData)intg_Value;//No es que el mundo no esté inicializado.#pragma?data_seg()//TheDLLprovidestwointerfacefunctions:int?GetValue(){return?Supongamos que A llama a SetValue(5); luego B llama a int m = GetValue(); el valor de m no es necesariamente 5, sino un valor indefinido. Esto se debe a que los datos globales en la DLL son privados para cada proceso que lo llama y no se pueden inicializar. g_Value debe colocarse en el segmento MyData. En otras palabras, si A llama a SetValue(5); B luego llama a int m = GetValue(); entonces el valor de m debe ser 5, para que se pueda lograr la comunicación de datos entre procesos #. Visual C++ le permite contraer un bloque de código específico, haciendo que la interfaz sea más limpia y más fácil de editar. También puede expandir el bloque de código en cualquier momento.
Formato: #pragma. ?region?name #pragma?endregion?comment El uso del ejemplo es el siguiente: #Como se muestra arriba, el código que se va a contraer debe estar contenido entre #pragma region y #pragma endregion. Después de #pragma region y #pragma endregion, puede agregar. algún texto de comentario, que se mostrará en la posición plegada cuando pliegue el bloque de código.
Cómo plegar bloques de código: tal como se pliega en Visual C++. Como funciones, clases y espacios de nombres, cuando el código es. incluido entre las instrucciones (como las instrucciones anteriores), aparecerá un signo "-" en el lado izquierdo de la línea del área #pragma. Haga clic en él para contraer el contenido y el signo "-" cambiará al signo "+". , haga clic nuevamente para expandir el bloque de código.
Esta directiva de precompilación está disponible en Visual Studio 2005 y versiones posteriores. Sin embargo, en Visual Studio 2005, cuando la región #pragma va seguida de un texto como "1st", se produce el "Error C2059: Error de sintaxis: 'Sufijo numérico incorrecto'". Evitar números o separar números de letras puede resolver este problema.