Open3
C言語のマクロ定数って型を付けられるんですか?
ちょっと真面目にお聞きしたいのですが、C言語のマクロ定数に型って付けられると思いますか?
というのも、Qiitaで以下の記事を書いたところ、
ある人が、「マクロ定数は、型キャストができるから型が付けられる」というのに対して、CだとわかりにくいのでRustのマクロと定数を比較して教えたのですが、どうも理解いただいていないみたいで。
私の回答の仕方が間違っているのもわかっているのですが、もう回答するのが精神的に辛く、ぶった切ってしまいました。
リテラルに型があるのはわかるのですが、だからと言って「マクロ定数に型を付けられる」と主張されてもなんだかなぁと思ってしまいます。
どう思われますか?
ちなみに、Zennにも書いてますので、新しくマサカリを投げたい場合は、こちらからどうぞ
簡単に書くけど、Rustで
macro_rules! x {
() => {42};
}
って定義したときに
let y1: i32 = x!();
let y2: u8 = x!();
が型エラーにならない時点で、マクロ定数に型など付けられないことに気づいてほしかったんですけどね・・・ちなみに定数だとちゃんと型エラーになる
ログインするとコメントできます