常用的pragma指令

2021-08-29 01:17:59 字數 917 閱讀 4340

#pragma pack(n) 作用:c編譯器設定結構體為n個位元組對齊

#pragma pack() 作用:取消自定義位元組對齊方式

詳解:每個特定平台的編譯器都有自己預設的對齊係數,也叫對齊模數。程式設計師可以通過編譯命令 #pragma pack(n),n = 1,2,4,8,16來改變這一係數,其中的n就是你要指定的對齊係數。

結構體對齊規則:

1.資料成員對齊規則:結構體(struct)或聯合(union)的資料成員。第乙個資料成員放在offect為0的地方,以後每個成員的對齊按照#pragma pack指定的數值和這個資料成員自身所佔的位元組數作對比,使用較小的那個對齊。

2.結構(或聯合)的整體對齊規則:在資料成員完成各自對齊之後,結構(或聯合)本身也要進行對齊,對齊將按照#pragma pack 指定的數值和結構(或聯合)最大資料成員長度中比較小的進行。

#pragma pack(push,1)與#pragma pack(1)區別:

這是給編譯器常用的引數設定,有關結構體位元組對齊方式設定,#pragma 是指定資料在記憶體中的對齊方式。

#pragma pack(n) 作用:c編譯器設定結構體為n個位元組對齊

#pragma pack() 作用:取消自定義位元組對齊方式

#pragma pack(push,1) 作用:是指把原來的對齊方式設定成壓棧,並設定新的對齊方式為1位元組對齊。

#pragma pack(pop) 作用:恢復之前的對齊方式。

例如:#pragma pack(push)//儲存當前的對齊方式

#pragma pack(4)//設為4位元組對齊

相當於#pragma pack(push,4)

除此之外,還有乙個解決qt或visual studio執行程式時出現中文亂碼問題:

#pragma execution_character_set(「utf-8」)。

pragma指令簡介

在編寫程式的時候,我們經常要用到 pragma指令來設定編譯器的狀態或者是指示編譯器完成一些特定的動作.下面介紹了一下該指令的一些常用引數,希望對大家有所幫助 一.message 引數。message 它能夠在編譯資訊輸出視窗中輸出相應的資訊,這對於源 資訊的控制是非常重要的。其使用方法為 prag...

解析 pragma指令

在所有的預處理指令中,pragma 指令可能是最複雜的了,它的作用是設定編譯器的狀態或者是指示編譯器完成一些特定的動作。pragma指令對每個編譯器給出了乙個方法,在保持與c和c 語言完全相容的情況下,給出主機或作業系統專有的特徵。依據定義,編譯指示是機器或作業系統專有的,且對於每個編譯器都是不同的...

解析 pragma指令

在所有的預處理指令中,pragma 指令可能是最複雜的了,它的作用是設定編譯器的狀態或者是指示編譯器完成一些特定的動作。pragma指令對每個編譯器給出了乙個方法,在保持與c和c 語言完全相容的情況下,給出主機或作業系統專有的特徵。依據定義,編譯指示是機器 或作業系統專有的,且對於每個編譯器都是不同...