ヘッダファイルの不具合について

2 posts / 0 new
Last post
nakaoka
Offline
Last seen: 4 years 11 months ago
Joined: 2011-07-25 18:26
ヘッダファイルの不具合について

Ubuntu上でOpenRTMを使用したプログラムのコンパイル時に _REENTRANT の再定義のWarningが出てしまう件について、OpenRTM 1.1の際に修正をお願いし、OpenRTM 1.2では修正が取り込まれると聞いていたのですが、OpenRTM 1.2.0 でも同様の問題が発生しています。

以前は config_rtc.h でこの警告が出ていたのですが、今度は conig_coil.h で出るようになりました。

以前と同様に、gccでスレッドを利用するのに必要な -pthread オプションをつけていると、

/usr/include/coil-1.2/coil/config_coil.h:134:0: warning: "_REENTRANT" redefined

といった警告が出ます。

OpenRTM関連ヘッダのインクルードの度に出るのでエラーや警告の確認に支障が出てしまいます。

conig_rtc.h ではこの問題が修正されているようで、そこで

 /* Multi Thread Support */
 #ifndef _REENTRANT
 #define _REENTRANT TRUE
 #endif // _REENTRANT

となっているのと同様に、 config_coil.h の方も修正していただけないでしょうか。

またこの件は最新版が1.1.xの際に指摘したところ、1.1.xには取り込まないが1.2.xで取り込まれるということで、それを待っていたのですが、やっと1.2.0がリリースされたので試したところ上記の結果でしたので残念です。1.2.1として早めに修正いただくか、githubなどに開発版のソースを上げていただいて、そこですぐに取ってこれるようになるとうれしいです。

また同様にヘッダの問題で、Ubuntu 18.04のGCCでC++11を有効にしてコンパイルを行うと、

 warning: dynamic exception specifications are deprecated in C++11 [-Wdeprecated]
       throw (CORBA::SystemException);

といったWarningが(OpenRTMのヘッダに対して)大量に出るようになりました。

関数定義にthrowをつけるのは今となっては止めるべき慣習とのことで、GCCの最新版でC++11を有効にするとこのような警告が出ます。C++17に至っては完全に廃止となるようです。 https://cpprefjp.github.io/lang/cpp17/remove_deprecated_exception_specifications.html

C++11以降の規格の利用は広まっていて標準となりつつありますから、throwについても除去していただけるとうれしいです。確かthrowについては除去しても特に実害はなかったのではないかと思います。

Undefined
Miyamoto Nobuhiko
Offline
Last seen: 1 hour 31 min ago
Joined: 2013-12-19 00:41
Re: ヘッダファイルの不具合について

開発版のソースコードは既にGitHubで公開しています。

throwに関するWarningはmasterのソースコードでは修正済みですが、1.2のブランチのソースコードに関しては修正は行わない方針です。このため1.2.1をリリースした場合でもWarningは解決しない予定です。

Log in or register to post comments

Download

latest Releases : 2.0.0-RELESE

2.0.0-RELESE Download page

Number of Projects

Choreonoid

Motion editor/Dynamics simulator

OpenHRP3

Dynamics simulator

OpenRTP

Integrated Development Platform

AIST RTC collection

RT-Components collection by AIST

TORK

Tokyo Opensource Robotics Association

DAQ-Middleware

Middleware for DAQ (Data Aquisition) by KEK