1. ホーム
  2. c

[解決済み] Cのtypeof演算子

2022-03-06 13:33:15

質問

C言語のtypeofは本当に演算子なのですか?
C言語にはポリモーフィズムがないので、実行時にやることがないのではないかと思っています。 つまり、コンパイル時にtypeofの答えが分かっている。 (コンパイル時にわからないようなtypeofの使い方は思いつきません。)ですから、演算子というよりは、コンパイル時の指令のようなものに見えるのです。

typeofは(GCCで)何か(プロセッサの)ランタイムを使うのですか?

解決方法は?

以来 typeof はコンパイラの拡張機能であるため、実際には定義はありませんが、C言語の伝統に従えば、例えば次のような演算子となります。 sizeof_Alignof も演算子として扱われます。

そして、あなたは勘違いしています。C言語には、実行時にのみ決定される動的な型、すなわちVM(Variable Modified)型があります。

size_t n = strtoull(argv[1], 0, 0);
double A[n][n];
typeof(A) B;

は、実行時にしか決定できません。

2021年に追加された。 typeof と同様のルールで sizeof はC23に入ります。