Warning: count(): Parameter must be an array or an object that implements Countable in /home/asaki/www/wordpress/wp-includes/post-template.php on line 275

Warning: count(): Parameter must be an array or an object that implements Countable in /home/asaki/www/wordpress/wp-includes/post-template.php on line 275

Warning: count(): Parameter must be an array or an object that implements Countable in /home/asaki/www/wordpress/wp-includes/post-template.php on line 275

Warning: count(): Parameter must be an array or an object that implements Countable in /home/asaki/www/wordpress/wp-includes/post-template.php on line 275

Warning: count(): Parameter must be an array or an object that implements Countable in /home/asaki/www/wordpress/wp-includes/post-template.php on line 275
3月 082004
 

最近KDE方面でがんばっているkzk氏ですが、その仕事の一つのkhtmlの日本語禁則処理patchを見ていて、ヘッダーでstaticな変数を宣言しないほうがいいよとアドバイス
で、その結果を受けてCVS-HEAD変更されているのに気が付いたので内容を確認してました。


変更内容を見て思ったのが、ヘッダーに配列が定義されたままになっているということ。どうやら、static修飾子を消しただけのようだ。私の意図としてはヘッダーで変数を定義するのではなく、ヘッダーでは宣言のみを行なって、配列の定義自体はbreak_lines.cppに移したらということだったのだが、どうやら言葉が全然足りなかったようだ。
それ自体は別にどうでもいいのだが、この変更を見ていて思ったのが、なぜコンパイルエラーにならないんだろうということ。というわけで、確認。

% cat a.c
const int val = 10;
% gcc -c a.c
% nm a.o
00000000 R val
% ln -s a.c b.cpp
% g++ -c b.cpp
% nm b.o
00000000 r val

man nmによると、「If lowercase, the symbol is local; if uppercase, the symbol is global (external).」ということなので、CかC++かで変数のスコープが異なっていることがわかる。
とりあえず、検索しまくって簡単な説明を発見。やはり、ARMなり、The C++ Programming Languageくらいは持っておいた方がいいなぁ。


Warning: count(): Parameter must be an array or an object that implements Countable in /home/asaki/www/wordpress/wp-includes/class-wp-comment-query.php on line 405

コメントを残す