You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by gn...@apache.org on 2020/06/01 13:11:01 UTC

[incubator-nuttx] 01/03: lib/stdlib: Change some macro to inline function

This is an automated email from the ASF dual-hosted git repository.

gnutt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit eac66d76b3ca9a0a9d05b54169af8f2579b63442
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Mon Jun 1 14:19:26 2020 +0800

    lib/stdlib: Change some macro to inline function
    
    to avoid the build break for "using ::xxx"
    
    Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
    Change-Id: Ib5d861a6c2b9e6ba585df83b3cdff8a3e1495bce
---
 include/stdlib.h | 47 +++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 43 insertions(+), 4 deletions(-)

diff --git a/include/stdlib.h b/include/stdlib.h
index 004fe01..388cb85 100644
--- a/include/stdlib.h
+++ b/include/stdlib.h
@@ -158,7 +158,15 @@ int       on_exit(CODE void (*func)(int, FAR void *), FAR void *arg);
 /* _Exit() is a stdlib.h equivalent to the unistd.h _exit() function */
 
 void      _exit(int status); /* See unistd.h */
-#define   _Exit(s) _exit(s)
+
+#ifdef __cplusplus
+inline void _Exit(int s)
+{
+  _exit(s);
+}
+#else
+#define _Exit(s) _exit(s)
+#endif
 
 /* System() command is not implemented in the NuttX libc because it is so
  * entangled with shell logic.  There is an experimental version at
@@ -187,13 +195,44 @@ double    strtod(FAR const char *str, FAR char **endptr);
 long double strtold(FAR const char *str, FAR char **endptr);
 #endif
 
-#define atoi(nptr)  ((int)strtol((nptr), NULL, 10))
-#define atol(nptr)  strtol((nptr), NULL, 10)
+#ifdef __cplusplus
+inline int atoi(FAR const char *nptr)
+{
+  return (int)strtol(nptr, NULL, 10);
+}
+#else
+#define atoi(nptr) ((int)strtol((nptr), NULL, 10))
+#endif
+
+#ifdef __cplusplus
+inline int atol(FAR const char *nptr)
+{
+  return strtol(nptr, NULL, 10);
+}
+#else
+#define atol(nptr) strtol((nptr), NULL, 10)
+#endif
+
 #ifdef CONFIG_HAVE_LONG_LONG
+#ifdef __cplusplus
+inline long long atoll(FAR const char *nptr)
+{
+  return strtoll(nptr, NULL, 10);
+}
+#else
 #define atoll(nptr) strtoll((nptr), NULL, 10)
 #endif
+#endif
+
 #ifdef CONFIG_HAVE_DOUBLE
-#define atof(nptr)  strtod((nptr), NULL)
+#ifdef __cplusplus
+inline double atof(FAR const char *nptr)
+{
+  return strtod(nptr, NULL);
+}
+#else
+#define atof(nptr) strtod((nptr), NULL)
+#endif
 #endif
 
 /* Binary to string conversions */