タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

cとc++に関するsatfyのブックマーク (3)

  • ポインタとメモリと型(構造体)の関係 (2) - C言語 - 碧色工房

    これは Cygwin 上の gcc での結果で Visual C++ を利用した場合 long double は 8Byte となります。 あと、 sizeof の結果は char いくつ分のサイズかを返す訳ですが、今回実験している環境だけではなく、 ほとんどの処理系では char は 8bit(1Byte)であるため(っていうかそうじゃない処理系ってあるのかなぁ)、 ここでは sizeof の返す値の単位を Byte であるとして話を進めています。 さらに、何度も書いていますがここでやっていることは、ほとんどが処理系依存で、 このような結果になることを前提にプログラムを書くと、非常に移植性の低いものになってしまいます。 また、同じ環境でもコンパイラの最適化の影響とかを受ける可能性もないわけではありません。 ハードウェア的にどうのといってる部分がいっぱいありますが、 正直なところ私はそっち

    ポインタとメモリと型(構造体)の関係 (2) - C言語 - 碧色工房
  • プラグマ

    #pragma keyword #pragma keyword (a [ , a] ... )[ , keyword ( a [, a ] ... )] ,... #pragma sun keyword 変数 keyword は特定の指令を示し、a は引数を示します。 Sun WorkShop C++ コンパイラが認識する一般的なプラグマのキーワードを次に示します。 align - デフォルトを無効にして、パラメータ変数のメモリー境界を、指定したバイト境界に揃えます。 init - 指定した関数を初期化関数にします。 fini - 指定した関数を終了関数にします。 ident - 実行可能ファイルの .comment 部に、指定した文字列を入れます。 pack (n) - 構造体オフセットの配置を制御します。n の値は、すべての構造体メンバーに合った最悪の場合の境界整列を指定する数字で、

  • Visual C++でアラインメントを扱う3つの機能、#pragma pack, __declspec(align(#)), __alignof演算子についてのメモ 【▲→川俣晶の縁側→ソフトウェア→技術雑記】

    構造体などのアラインメントは、16bit用ソースを32bitで使う場合に問題になる場合があります。おそらく、同様に32bit→64bitのケースでも問題になるケースがあると思われるので、今からメモっておく価値がある? サンプルソースはVisual Studio.NET 2003のWin32コンソールアプリケーション用で、プリコンパイルヘッダー関係は割愛しています。解説はWindowsの32bit環境であることを前提としています。 #pragma packの使用例 § ソースコードの途中でアラインメントを変更します。 それだけでなく、pushとpopの機能を使うと、一時的に変更したものを戻すことができます。 コマンドラインオプションでも変更できますが、それによってソースコードの途中で切り替えることはできません。 サンプルソースを以下に示します。 アラインメントを変更した構造体と、変更しない構

  • 1