いちばんやさしいゲームの作り方

文系の人でも、数理学がわからない人でもゲームプログラミングをマスターできるブログ

Visual C++ 標準のコンパイラ cl.exe で警告レベルを /W4 にしてコンパイルすると、一度も使われていない変数に対して警告が発せられますが、 argc や argv など、場合によっては使わない可能性がある変数を警告から守る(?)方法を WEB で見つけました。

方法は簡単、使わない変数を void でキャストするだけです。

int main(int argc, char *argv[])
{
  static_cast<void>(argc); // ←ここと…
  static_cast<void>(argv); // ←ここ

  return 0;
}

ただ、基本的に警告に対しては真摯に向き合った方が良いと思います。変数を自分で用意しておいて使わないというのは、何か間違えているような気がします(ましてや1度も使ってないというのは凡ミスですよね)。

何かの情報を WEB で検索しているときに見つけたのですが、これ、どこかの書籍でも書いてあったかもしれません。

Comments

bleis-tift
2009/07/09 07:35:41

引数名を省略してしまえばいいんじゃないでしょうか?

int main(int, char*[])
{
 ・・・
}

道化師
2009/07/09 08:14:48

自分は単に、 argc, argv; と記述します。
…が、この手の記述は所詮バッドノウハウで、これで警告を消せるコンパイラもあれば、元々使っていない変数についての警告を出さないコンパイラであれば逆に意味がないコードが記述されているとして警告がでちゃったりします。(‘A`)

Byerkut
2009/07/11 01:31:28

> bleis-tift さん

ご訪問ありがとうございます。

int main(void) というのが何か違うような気がしていつも仮引数書いてたのですが、
こういう書き方ができるとは知りませんでした(驚
教えていただいてありがとうございます m(_ _)m

>道化師さん

むぉ、そうか、そのまま変数を書けば良いんですね。
たぶん、それで式になりますよね。 void の関数とかそうですし。

「意味がないコード」と警告の出るコンパイラの存在を知りませんでした。
ありがとうございます m(_ _)m
使っていない変数に警告が出ないというのもコンパイラの設計ポリシーなのか、
性格があるみたいで面白いですね。

2009/07/12 18:28:05

はじめまして.Visual C++ なら

#ifdef _MSC_VER
#pragma warning (disable : 4100)
#endif

とかもどうでしょう.Visual C++ からコンパイラが変われば _MSC_VER が定義されていないので無視されますし.

多分これがコンパイラにとってもプログラマにとってもベターな解決策なんじゃあないかなぁ,と思って私は使ってますw (^^;

Byerkut
2009/07/13 20:19:28

>かさん

はじめまして、ご訪問ありがとうございます。

なるほどプリプロセッサで振り分けるのも手ですね。
今回のケースだけでなく、コンパイラによってコードやプラグマを変えたいようなことがあると思いますが、
そういった際に判断材料となる、コンパイラ定義の定数一覧なんか勉強しておきたいです。

まずは _MSC_VER が勉強になりました。
ありがとうございます(^^

Contributions




Trackback URL

メルマガ登録・解除
 
挫折不可能!初級ゲームプログラミング完全マニュアル
RSS track feedいちばんやさしいゲームの作り方 カウンター
ブログSEO対策:track word あわせて読みたい SEO STATUS