Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
次のようなコードがあります。
#include <stdio.h> typedef struct SomeStruct* ptr; main(){ printf("%lu\n",sizeof(ptr)); }
指定されたコードは のサイズを出力しstruct SomeStruct*ます。しかし、私は欲しいですsizeof(struct SomeStruct)。構造体の名前が事前にわからない場合でも、 が指す構造体のサイズを見つける方法はありptrますか?
struct SomeStruct*
sizeof(struct SomeStruct)
ptr
type の変数がある場合はptr、それを逆参照できます。
ptr v; sizeof(*v)
NULLは type に変換できる変数なのでptr、単純に次のように使用します。
NULL
sizeof *(ptr)NULL
別の方法として、ポインターを型定義するという醜い慣行を回避することもできます。そうすれば、この問題は完全になくなります。