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

2 個の投稿 / 0 new
最終投稿
nakaoka
オフライン
Last seen: 2年 8ヶ月 前
登録日: 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については除去しても特に実害はなかったのではないかと思います。

未定義
Miyamoto Nobuhiko
オフライン
Last seen: 4日 21時間 前
登録日: 2013-12-19 00:41
Re: ヘッダファイルの不具合について

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

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

コメントを投稿するにはログインまたはユーザー登録を行ってください

ダウンロード

最新バージョン

初めての方へ

Windows msi(インストーラ) パッケージ (サンプルの実行ができます。)

C++,Python,Java,
Toolsを含む
1.2.1-RELEASE

RTコンポーネントを開発するためには開発環境のインストールが必要です。詳細はダウンロードページ

統計

Webサイト統計
ユーザ数:1887
プロジェクト統計
RTコンポーネント300
RTミドルウエア30
ツール22
文書・仕様書1

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク