demo_rx.c 内部で#include ”ros/ros.h”をするとコンパイルエラーが起きた.
(demo_rx.cを改造して,受信データをROSmsgs経由で他のノードに転送したかった)
エラー内容:
#include <string> がno such file
→拡張子なしファイルのincludeとは?
調査結果:
C++がCに対して後方互換性を保つための記述方法.
効果は,標準関数が全て名前空間 [std::] に属してしまうことで生じる不整合の解消.
以下のページが分かりやすい.知らなかった・・・
https://oshiete.goo.ne.jp/qa/6138437.html
対策:
demo_rx.cはC言語ファイルなのに,”ros/ros.h”の内部でC++の表現が含まれているのが問題.
→demo_rx.c の拡張子を.cppにすることで解決