目次 - SDL 3.0 API(機能別) - CategoryBeginCode - SDL_ALIGNED

SDL_ALIGNED

データのアライメントを指定するマクロ

ヘッダ

SDL3/SDL_begin_code.h

構文

#define SDL_ALIGNED(x) __attribute__((aligned(x)))

引数

xアライメントのバイト数. データのアドレスはこの値の倍数となる

詳細

これはコンパイラにデータ型または変数を指定のバイト数でアライメントしなければならないことを知らせる.

例:

// この構造体をSIMDアクセスのために16バイトでアライメントする
typedef struct {
   float x, y, z, w;
} SDL_ALIGNED(16) MySIMDAlignedData;

// 構造体のフィールドの1つをSIMDアクセスのために16バイトでアライメントする
typedef struct {
   SomeStuff stuff;
   float SDL_ALIGNED(16) position[4];
   SomeOtherStuff other_stuff;
} MyStruct;

// この変数を32バイトでアライメントする
int SDL_ALIGNED(32) myval = 0;

アライメントが保証されるのはコンパイラが配置するもの(スタック上のローカル変数やグローバル/静的変数)のみである. 動的に確保されるものをアライメントに従わせるにはSDL_aligned_alloc()やその他の処理を使用すること.

コンパイラがアライメントに対応していない場合, このマクロは無効なシンボルに定義されるため, このマクロがあるときコンパイラが不正なコードを生成する可能性があることを明確にする.

バージョン

SDL 3.4.0以降

SDL Wikiへのリンク

SDL_ALIGNED - SDL Wiki