Project

General

Profile

Actions

Bug #8674

closed

[patch] unused-parameter warning in ruby/ruby.h

Added by Linda_pp (Ryuichi Hayashida) over 11 years ago. Updated about 11 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-darwin12.3.0]
[ruby-dev:47534]

Description

C++ のプログラムで ruby.h をインクルードすると ruby/ruby.h にて unused-parameter の警告が出ます.

・警告内容
In file included from /Users/rhayasd/.rbenv/versions/2.1.0-dev/include/ruby-2.1.0/ruby.h:33:0,
from ruby_interpreter.cpp:6:
/Users/rhayasd/.rbenv/versions/2.1.0-dev/include/ruby-2.1.0/ruby/ruby.h:1270:1: warning: unused parameter 'filename' [-Wunused-parameter]
rb_obj_wb_unprotect(VALUE x, const char *filename, int line)
^
/Users/rhayasd/.rbenv/versions/2.1.0-dev/include/ruby-2.1.0/ruby/ruby.h:1270:1: warning: unused parameter 'line' [-Wunused-parameter]
/Users/rhayasd/.rbenv/versions/2.1.0-dev/include/ruby-2.1.0/ruby/ruby.h:1290:1: warning: unused parameter 'oldv' [-Wunused-parameter]
rb_obj_written(VALUE a, VALUE oldv, VALUE b, const char *filename, int line)
^
/Users/rhayasd/.rbenv/versions/2.1.0-dev/include/ruby-2.1.0/ruby/ruby.h:1290:1: warning: unused parameter 'filename' [-Wunused-parameter]
/Users/rhayasd/.rbenv/versions/2.1.0-dev/include/ruby-2.1.0/ruby/ruby.h:1290:1: warning: unused parameter 'line' [-Wunused-parameter]

・コンパイラ
 gcc 4.8.1

・コマンド
 g++ -Wall -Wextra -std=c++11 source.cpp

・環境
 MacOS X 10.8.4


Files

fix-warning-for-unused-parameter.patch (575 Bytes) fix-warning-for-unused-parameter.patch 警告を抑制しました Linda_pp (Ryuichi Hayashida), 07/24/2013 12:13 AM

Updated by Linda_pp (Ryuichi Hayashida) over 11 years ago

ruby -v の出力が間違っていました。

ruby 2.1.0dev (2013-07-23 trunk) [x86_64-darwin12.3.0]

でした。失礼しました。

Updated by ko1 (Koichi Sasada) over 11 years ago

使わないパラメータを残しているのは意図的なんですが、どうしたもんでしょ
う。マクロで使うときだけ有効にするような感じにするといいですかねぇ。

(2013/07/24 9:47), Linda_pp (R H) wrote:

Issue #8674 has been updated by Linda_pp (R H).

ruby -v の出力が間違っていました。

ruby 2.1.0dev (2013-07-23 trunk) [x86_64-darwin12.3.0]

でした。失礼しました。

Bug #8674: [patch] unused-parameter warning in ruby/ruby.h
https://bugs.ruby-lang.org/issues/8674#change-40629

Author: Linda_pp (R H)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-darwin12.3.0]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN

C++ のプログラムで ruby.h をインクルードすると ruby/ruby.h にて unused-parameter の警告が出ます.

・警告内容
In file included from /Users/rhayasd/.rbenv/versions/2.1.0-dev/include/ruby-2.1.0/ruby.h:33:0,
from ruby_interpreter.cpp:6:
/Users/rhayasd/.rbenv/versions/2.1.0-dev/include/ruby-2.1.0/ruby/ruby.h:1270:1: warning: unused parameter 'filename' [-Wunused-parameter]
rb_obj_wb_unprotect(VALUE x, const char *filename, int line)
^
/Users/rhayasd/.rbenv/versions/2.1.0-dev/include/ruby-2.1.0/ruby/ruby.h:1270:1: warning: unused parameter 'line' [-Wunused-parameter]
/Users/rhayasd/.rbenv/versions/2.1.0-dev/include/ruby-2.1.0/ruby/ruby.h:1290:1: warning: unused parameter 'oldv' [-Wunused-parameter]
rb_obj_written(VALUE a, VALUE oldv, VALUE b, const char *filename, int line)
^
/Users/rhayasd/.rbenv/versions/2.1.0-dev/include/ruby-2.1.0/ruby/ruby.h:1290:1: warning: unused parameter 'filename' [-Wunused-parameter]
/Users/rhayasd/.rbenv/versions/2.1.0-dev/include/ruby-2.1.0/ruby/ruby.h:1290:1: warning: unused parameter 'line' [-Wunused-parameter]

・コンパイラ
 gcc 4.8.1

・コマンド
 g++ -Wall -Wextra -std=c++11 source.cpp

・環境
 MacOS X 10.8.4

--
// SASADA Koichi at atdot dot net

Actions #3

Updated by Linda_pp (Ryuichi Hayashida) over 11 years ago

下記のように、パラメータを使用しない場合は警告を抑制するようにしてはいかがでしょうか。

*** ruby.h.old 2013-07-23 01:08:27.000000000 +0900
--- ruby.h 2013-07-23 23:57:01.000000000 +0900


*** 1271,1276 ****
--- 1271,1279 ----
{
#ifdef RGENGC_LOGGING_WB_UNPROTECT
RGENGC_LOGGING_WB_UNPROTECT(x, filename, line);

  • #else

  • (void)filename;
    
  • (void)line;
    

    #endif

    #if USE_RGENGC


*** 1291,1296 ****
--- 1294,1303 ----
{
#ifdef RGENGC_LOGGING_OBJ_WRITTEN
RGENGC_LOGGING_OBJ_WRITTEN(a, oldv, b, filename, line);

  • #else

  • (void)oldv;
    
  • (void)filename;
    
  • (void)line;
    

    #endif

    #if USE_RGENGC

Updated by shyouhei (Shyouhei Urabe) over 11 years ago

Linda_pp (R H) wrote:

  • #else
  • (void)filename;
    
  • (void)line;
    
    #endif

(void) で黙らせるのは感心しません。gccにおける警告の抑制が目的なら__attribute__((used))か__attribute__((unused))のどちらか適切な方を使うべきです。基本的に警告を黙らせる目的でキャスト使うのは邪悪です。避けるべきと思います。

Updated by kosaki (Motohiro KOSAKI) over 11 years ago

(7/24/13 6:31 PM), shyouhei (Shyouhei Urabe) wrote:

Issue #8674 has been updated by shyouhei (Shyouhei Urabe).

Linda_pp (R H) wrote:

  • #else
  • (void)filename;
    
  • (void)line;
    
    #endif

(void) で黙らせるのは感心しません。gccにおける警告の抑制が目的なら__attribute__((used))か__attribute__((unused))のどちらか適切な方を使うべきです。基本的に警告を黙らせる目的でキャスト使うのは邪悪です。避けるべきと思います。

(void)で黙らせるのはあまりに広く普及しているので普通のコンパイラなら変なコード吐かないようにケアしてくれてると思うけどなあ。
ところでこれって、-Wunused-parameter 由来だから C++ じゃなくて -Wextra由来だと思うんですが、なにか勘違いしてるかなあ。
-Wextraは false positive てんこもりなのを許容しますよという宣言をコンパイラにしているのだから、つまらない警告でてもそういうものとしか思わないんだけど。

Updated by hsbt (Hiroshi SHIBATA) about 11 years ago

  • Status changed from Open to Feedback

Linda_pp

shyouhei さんと kosaki さんのコメントに関して何か意見ありましたらお願いします。

Updated by nobu (Nobuyoshi Nakada) about 11 years ago

  • Status changed from Feedback to Closed

Fixed at r43370.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0