[Collection] #pragma parameter use tutorial

xiaoxiao2021-03-05  25

The article comes from vchelp and is in this backup. . . .

In all preprocessing instructions, the # prgMA instruction may be the most complicated, its role is to set the status of the compiler or indicate that the compiler does some specific actions. #pragma instructions give each compiler a method to give the host or operating system proprietary feature in the case where the C and C language is fully compatible. Based on definitions, compilation indication is perfect for machines or operating systems and is different for each compiler. Its format is generally: #pragma para, where parameters are parameters, below to see some common parameters. (1) Message parameters. The Message parameter is my favorite parameter, which can output the corresponding information in the compiled information output window, which is very important for the control of source code information. The method of use is: #pragma Message ("Message Text) When the compiler encounters this instruction, print the message text in the compilation output window. When we define many macros in the program to control the source code version, we may have forgotten that there is no correct settings. At this time we can use this instruction to check when compiling. Suppose we want to judge what you have in the source code _X86 this macro can use the following method #ifdef _x86 #pragma message ("_ x86 macro actid!") #ENDIF When we define _x86 this macro, The application will display "_ x86 macro actid!" In the compilation output window when compiling. We will not scratch it because of some specific macro they define. (2) Another multi-use PRAGMA parameter is Code_SEG. Formats, such as: #pragma code_seg ([Section-Name "[," Section-Class "]] It can set the code segment stored in the program in the program, which will use it when we develop the driver. (3) #pragma ONCE (more common) As long as the first order in the header file can ensure that the header file is compiled once, this instruction is actually already in VC6, but considering compatibility does not Too much use it. (4) #pragma HDRSTOP indicates that the pre-translated header files will be, and the header files will not be precompiled. The BCB can pre-translate the header file to speed up the speed of the link, but if all header files are pre-compiled, it may account for too much disk space, so use this option to exclude some header files. There is a dependency between the units, such as unit A dependent unit B, so unit B is compiled by unit A. You can use #pragma startup to specify compilation priority, if #pragma package (smart_init) is used, BCB will compile according to the size of the priority. (5) #pragma resource "* .dfm" means adding resources in the * .dfm file to the project. * .dfm includes the definition of the form of the form.

(6) #pragma Warning (DISABLE: 4507 34; Once: 4385; Error: 164) Equivalent: #pragma Warning (Disable: 4507 34) // Does not display 4507 and 34 Warning Information #pragma Warning (ONCE: 4385 /// 4385 Warning information only reports #pragma warning (Error: 164) // Take 164 warning information as an error. At the same time, this Pragma Warning also supports the following format: #pragma Warning (push [, n]) #pragma Warning (POP) This n represents a warning level (1 --- 4). #Pragma Warning (Push) Save existing warning status of all warning information. #Pragma warning (push, n) Save existing warning status of all warning information, and set the global warning level to n. #Pragma Warning (POP) pops up the last warning message in the stack, canceling all changes made between the stack and out of the stack. For example: #pragma Warning (Push) #pragma Warning (Disable: 4705) #pragma Warning (Disable: 4706) #pragma Warning (Disable: 4707) // ....... #pragma Warning (POP) in this paragraph At the end of the code, re-save all warning information (including 4705, 4706, and 4707). (7) Pragma Comment (...) This instruction puts a comment record into an object file or executable. Commonly used lib keywords can help us connect into a library file. Each compiler can activate or terminate some of the compiler supported by the #pragma instruction.

For example, a cyclic optimization function: #pragma loop_opt // activation #pragma loop_opt (off) // Terminate Some functions in the program will make the compiler you want to ignore the warning you want to ignore, such as "Parameter XXX IS Never buy in function xxx ", can be: #pragma warn -100 // Turn off the warning message for warning # 100 int insert_record (REC * R) {/ * function body * /} #pragma Warn 100 // Turn Tur The Warning Message for Warning # 100 The Back ON function generates a warning message with a unique signature 100, so you can temporarily terminate the warning. Each compiler is different from #pragma, which is valid in a compiler to be almost invalid in another compiler. You can view from the compiler's documentation. A very important parameter #pragma pack (n) data boundary aligned: Structure: struct {char A; Word B; DWORD C; char D;} In Windows Default Structure Size: SIZEOF (Struct) = 4 4 4 4 = 16; if it is set to #pragma pack (4), the structure size: sizeof (struct) = 1 2 4 1 = 8; if set to #pragma Pack (2), the structure size: sizeof (struct) = 2 2 4 2 = 10; when #pragma pack (1): space is saved, but the accesses are reduced; in the system communication, such as And hardware equipment communication, and other operating systems, etc., must ensure the consistency of both parties

转载请注明原文地址:https://www.9cbs.com/read-34711.html

New Post(0)