char s[10]="welcome";
たとえば&s
、タイプはchar(*)[2]
です。このような変数の型を見つけるためにCにとにかくありますか?
ほとんどの* コンパイラはtypeof
、非常に便利な演算子をサポートしています。これは基本的に C++ の と同等decltype
であるため、文字列などの便利なものに変換するには、おそらくマクロが必要になるでしょう。
#define _STRINGIFY(arg) #arg
#define STRINGIFY(arg) _STRINGIFY(arg)
*: ほとんどのコンパイラは clang、GCC、そして MSVC だと思います。
コンパイラは知っていますが、コンパイルが完了するとその情報は破棄されます。どういうわけか、実行時に変数の型のテキスト記述を求めることはできません。文字列「char(*)[2]」を返すメソッドはありません
これを行うには、C コンパイラと統合するか、C コンパイラを作成して実行時にコードを実行する必要があります。