おそらくobject_getIvar
何か違うことをするわけではありませんが、タイプまたは他のオブジェクトタイプのインスタンス変数id
が一般的であり、呼び出しivar_getOffset
て結果を値に追加してobject
から適切なタイプにキャストするのははるかに面倒です。
void *
C99 標準 (強調鉱山) からの次の情報に基づいて、a の値を確実にインクリメントできないことに注意してください。
C99 §6.2.5 (1): (...) 型は、オブジェクト型(オブジェクトを完全に記述する型)、関数型(関数を記述する型)、および不完全型(オブジェクトを記述するが、必要な情報を欠いている型) に分割されます。サイズを決定します)。
C99 §6.2.5 (19):void
型は値の空のセットで構成されています。完成できない不完全型です。
C99 §6.5.6 (2): 加算の場合、両方のオペランドが算術型を持つか、一方のオペランドがオブジェクト型へのポインターで、もう一方が整数型でなければなりません。(増加は 1 を追加することと同じです。)
C99 §6.5.2.1 (1): 式の 1 つは「オブジェクト型へのポインター」型を持ち、もう 1 つの式は整数型を持ち、結果は「型」型を持ちます。
ポインターを任意の数だけインクリメントするには、代わりに使用できますchar *
。