CUDAコンパイラはマクロに弱い。


覚え書き。(突っ込み入ったので、語弊がないように一部書き直し。

 

弱いんだかなんだか、評価は出来ませんが、
とりあえず、CUDA コンパイラ(nvcc) はマクロ展開に際して非常によろしくない挙動を取ります。

 

CUDAコンパイラは糞。マクロを正常に展開しない。 – 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
詳細については上記リンクの記事を参照して頂ければとおもいます。

とりあえず、

HWND hwnd = CreateWindow(lpClassName,  // CLASS NAME

                          lpWindowName, //WINDOWNAME

というような、引数が複数行にわたって記述される場合で、コメントを1行コメントなんぞ付けたりすると、
マクロが良い感じで展開してくれないよ-。ということ。

 

C コンパイラというから、きっと、全部コメントは /* */ だろ!ということで、
NVIDIAの中の人がかなり手を抜いているような気がしてなりません。

 
/* ~ */ で括れば、とりあえず、コメントの範囲はわかるし! みたいな。うん。
なんかそんなこと考えたら余程ステキな仕様な気がしてきた。うん。

ま・・まぁ、とりあえず、
ユーザはコメントを /* */ で書いて、
NVIDIAの中の人にはマクロ展開部分をきっちり作ってもらって。と。

 

でも、C99 って1行コメント使えるよなぁ・・。
Cでも使える時代が到来しているのに・・。むぅ。


 

関連記事