No.1ベストアンサー
- 回答日時:
ターゲットにも依存しますが、次のようにすれば、おそらくサイズを知ることができると思います。
#define PRINT_SIZEOF(type) PRINT_SIZEOF_(type, __LINE__)
#define PRINT_SIZEOF_(type, line) \
void print_sizeof_##line() { asm volatile("size of " #type " is %0" :: "g"(sizeof(type))); }
PRINT_SIZEOF(struct foo)
Cのソースに上記のように書いておけば、アセンブルの段階で、
Error: no such instruction: `size of struct foo is $123'
というエラーが発生します。$123のところがstruct fooのバイト数です。
__LINE__マクロを使っているのは、同じソースファイルの中で、複数のPRINT_SIZEOFを使えるようにするためです。
No.3
- 回答日時:
#1です。
ちなみにC++であれば、もっと簡単になります。
template <typename T, int> struct type_;
#define PRINT_SIZEOF(type) inline void size_of_(type_<type, sizeof(type)>) {}
PRINT_SIZEOF(foo)
と書いてコンパイルすれば、
test.cc: In function `void size_of_(type_<foo, 123>)':
test.cc:6: error: `<anonymous>' has incomplete type
test.cc:3: error: declaration of `struct type_<foo, 123>'
のようなメッセージが出て、foo型が123バイトであることが分かります。
今回は、型が異なれば多重定義になるので、__LINE__を使った面倒なことはやめています。
No.2
- 回答日時:
gcc -Sとしてアセンブラリストを出させてみるのはいかがでしょう。
サイズの埋め込みが分かりやすいように
int func(void)
{
return sizeof(hogehoge);
}
という関数を作っておけば、見つけやすいかと思います
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- カップル・彼氏・彼女 初体験の元彼女がずっと胸のサイズもありスポブラだったのですが、新しくできた彼女はサイズもなかなかある 6 2023/08/27 01:35
- C言語・C++・C# C言語 2 2022/07/21 00:02
- C言語・C++・C# C言語(構造体) 3 2022/07/05 20:08
- 工学 半導体 光減衰法による少数キャリアのライフタイム測定で周波数を変えたときの検出波形(縦軸出力電圧、横 1 2023/05/16 19:15
- その他(悩み相談・人生相談) フェミニストの言う男女の平等の終着点ってどこだと思いますか?また、どこですか? 1.手当や評価、権利 2 2022/12/20 20:20
- システム 帳票出力を行う単体テストのテストデータが作成できません 2 2023/08/26 21:26
- IT・エンジニアリング 帳票出力を行う単体テストのテストデータが作成できません 2 2023/08/26 21:25
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
応用情報技術者試験の令和元年...
-
インクリメント演算子のみを用...
-
右ビットシフト
-
Windows formアプリで データグ...
-
Linux Cプログラミングを学ぶた...
-
プログラミングについて。 1つ...
-
Stuck
-
Notepad++の関数リスト表示でC...
-
Linuxでの開発環境構築や設定の...
-
[C言語]fputsとfprintfの違い
-
Notepad++の関数リスト表示の変...
-
システムエンジニアの適正について
-
どちのほうがすきですか?
-
gccを行ってもexeファイルが生...
-
c言語
-
C言語 配列と関数の練習問題
-
こんなことてしますか??
-
C++6.0でのresource.hについて
-
c言語
-
MACで動く実行ファイルをWindow...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列と関数の練習問題
-
システムエンジニアの適正について
-
[C言語]fputsとfprintfの違い
-
C言語をコンパイルするとコンピ...
-
mallocについて
-
どちのほうがすきですか?
-
ArduinoのジャイロモジュールMP...
-
大量のデータを読み込んで表示...
-
gccを行ってもexeファイルが生...
-
VisualStudio2022でC言語プログ...
-
C言語 列挙型(enum型)変数について
-
こんなことてしますか??
-
C言語の関数と配列に関する質問
-
Linuxでの開発環境構築や設定の...
-
質問失礼します。 プログラム言...
-
MACで動く実行ファイルをWindow...
-
WindowsのCapsLock(キャップス...
-
これなにがちがうんですか??
-
卒業研究でよく分からないとこ...
-
gcc13.2のバグ?
おすすめ情報