OpenRTM / OpenRTM-aist

OpenRTM-aist: RT-Middleware and OMG RTC implementation in C++ implemented by AIST
https://openrtm.org/
Other
19 stars 12 forks source link

config_coil.h and config_rtc.h include bad symbols. #221

Closed r-kurose closed 5 years ago

r-kurose commented 5 years ago

Describe the bug configxxx.h が から始まるグローバルシンボルを含んでいる。 また、 HAVE_XXX などの接頭語なしシンボルを持つ。 (優先度低)

To Reproduce ビルドすると生成される。

Reproducibility 100%

Expected behavior 良くないシンボルを含まないこと。

Screenshots or Logs

/tmp/build_2019-03-08/src/lib/coil/../coil/config_coil.h:133:9: warning: macro name is a reserved identifier [-Wreserved-id-macro]
/tmp/build_2019-03-08/src/lib/rtm/../coil/config_coil.h:133:9: warning: macro name is a reserved identifier [-Wreserved-id-macro]
/tmp/build_2019-03-08/src/lib/rtm/../rtm/config_rtc.h:174:9: warning: macro name is a reserved identifier [-Wreserved-id-macro]

Environment

Additional context none

r-kurose commented 5 years ago

追記: config_coil.h は coil の設定だが、ヘッダを通して coil 外にも展開されている点も良くない。

n-ando commented 5 years ago

https://www.jpcert.or.jp/sc-rules/c-dcl37-c.html 詳細はこの辺で解説されている。

ちなみに、接頭語なしシンボルとはどういうものでしょうか?

n-ando commented 5 years ago

HAVE_DLFCN_H など HAVE_系はほぼ autoconf が自動で定義しているため、試用していなければ削除。 アンダスコア定義 OSVERSION , _REENTRANT も使っていなければ削除してもよい。

r-kurose commented 5 years ago

だいたい察しの通りの内容です。以下は coil なお _ 関連の予約語は上記の C 言語の話と C++ は微妙に違いあります。

/* config_coil.h.  Generated from config_coil.h.in by configure.  */
/* config_coil.h.in.  Generated from configure.ac by autoheader.  */

/* ACE version 5.6.1 or earlier */
/* #undef ACE_5_6_1_OR_EARLIER */

/* COIL major version */
#define COIL_MAJOR_VERSIO ""

/* COIL minor version */
#define COIL_MINOR_VERSION "0"

/* OS is Max OS X */
/* #undef COIL_OS_DARWIN */

/* OS is FreeBSD */
/* #undef COIL_OS_FREEBSD */

/* OS is HP-UX */
/* #undef COIL_OS_HPUX */

/* OS is IRIX */
/* #undef COIL_OS_IRIX */

/* OS is Linux */
#define COIL_OS_LINUX TRUE

/* OS is OSF1 */
/* #undef COIL_OS_OSF1 */

/* OS is QNX */
/* #undef COIL_OS_QNX */

/* OS is SunOS */
/* #undef COIL_OS_SUNOS */

/* OS is Windows */
/* #undef COIL_OS_VXWORKS */

/* OS is VxWorks */
/* #undef COIL_OS_WIN32 */

/* coil platform is ACE */
#define COIL_PLATFORM POSIX

/* COIL revision numver */
#define COIL_REVISION_NUM "0"

/* COIL short version */
#define COIL_SHORT_VERSION "2.0"

/* COIL version */
#define COIL_VERSION "2.0.0"

/* Define to 1 if you have the <dlfcn.h> header file. */
#define HAVE_DLFCN_H 1

/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1

/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_INTTYPES_H 1

/* Define to 1 if you have the <nlist.h> header file. */
/* #undef HAVE_NLIST_H */

/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1

/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1

/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1

/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1

/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1

/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1

/* Define to 1 if you have the `uname' function. */
#define HAVE_UNAME 1

/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1

/* Name of package */
#define PACKAGE "coil"

/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "n-ando@aist.go.jp"

/* Define to the full name of this package. */
#define PACKAGE_NAME "coil"

/* Define to the full name and version of this package. */
#define PACKAGE_STRING "coil 2.0"

/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "coil"

/* Define to the version of this package. */
#define PACKAGE_VERSION "2.0"

/* RTM is compiled with gcc2 */
/* #undef RTM_GCC2 */

/* ARTLinux is enable */
/* #undef RTM_OS_ARTLINUX */

/* RDTSC is enable */
/* #undef RTM_RTDSC */

/* Define to 1 if you have the ANSI C header files. */
/* #undef STDC_HEADERS */

/* Version number of package */
#if 0
#define VERSION "1.0"
#endif

/* compiled with ACE */
/* #undef WITH_ACE */

/* Define if using the dmalloc debugging malloc package */
/* #undef WITH_DMALLOC */

/* Multi Thread Support */
#define _REENTRANT TRUE
n-ando commented 5 years ago

自分で定義したものはRTMやCOILなど接頭辞をつけています。 基本 config_XXX.h は接頭辞 XXX をつけることとし、autoconf系が定義するものは必要がないものは基本削除の方針でお願いします。