Lập trình C - C #pragma
C #pragma
Chỉ thị tiền xử lý #pragma là một chỉ thị cho compiler biết cách dịch chương trình theo một số “tùy chọn” đặc biệt, tùy thuộc vào từng trình biên dịch.
Cú pháp:
#pragma token
Ví dụ: Khai báo struct với kích thước không đổi với mọi trình dịch:
#pragma pack (push)
#pragma pack (1)
struct NewStruct {
int a;
int b;
char c;
};
#pragma pack (pop)
Thông thường trình biên dịch sẽ làm tròn để kích thước struct là số chia hết cho 4, (hoặc 2, 8, 16… tùy vào cấu hình build). Với cách khai báo trên trong VC++ và gcc, kích thước cấu trúc sẽ luôn luôn không đổi với mọi trình biên dịch, mọi cấu hình
Các trình biên dịch khác nhau có thể cung cấp cách sử dụng các chỉ thị tiền xử lý khác nhau.
Trình biên dịch C++ hỗ trợ các chỉ thị tiền xử lý:
#pragma argsused
#pragma exit
#pragma hdrfile
#pragma hdrstop
#pragma inline
#pragma option
#pragma saveregs
#pragma startup
#pragma warn
Ví dụ :
#include<stdio.h>
#include<conio.h>
void func() ;
#pragma startup func
#pragma exit func
void main(){
printf("\nI am in main");
getch();
}
void func(){
printf("\nI am in func");
getch();
}
Kết quả:
I am in func
I am in main
I am in func