diff --git a/include/pybind11/detail/common.h b/include/pybind11/detail/common.h index c6d20634c..6d328ba8b 100644 --- a/include/pybind11/detail/common.h +++ b/include/pybind11/detail/common.h @@ -205,6 +205,7 @@ extern "C" { #define PYBIND11_TRY_NEXT_OVERLOAD ((PyObject *) 1) // special failure return code #define PYBIND11_STRINGIFY(x) #x #define PYBIND11_TOSTRING(x) PYBIND11_STRINGIFY(x) +#define PYBIND11_CONCAT(first, second) first##second /** \rst ***Deprecated in favor of PYBIND11_MODULE*** @@ -267,7 +268,7 @@ extern "C" { } \endrst */ #define PYBIND11_MODULE(name, variable) \ - static void pybind11_init_##name(pybind11::module &); \ + static void PYBIND11_CONCAT(pybind11_init_, name)(pybind11::module &); \ PYBIND11_PLUGIN_IMPL(name) { \ int major, minor; \ if (sscanf(Py_GetVersion(), "%i.%i", &major, &minor) != 2) { \ @@ -281,9 +282,9 @@ extern "C" { major, minor); \ return nullptr; \ } \ - auto m = pybind11::module(#name); \ + auto m = pybind11::module(PYBIND11_TOSTRING(name)); \ try { \ - pybind11_init_##name(m); \ + PYBIND11_CONCAT(pybind11_init_, name)(m); \ return m.ptr(); \ } catch (pybind11::error_already_set &e) { \ PyErr_SetString(PyExc_ImportError, e.what()); \ @@ -293,7 +294,7 @@ extern "C" { return nullptr; \ } \ } \ - void pybind11_init_##name(pybind11::module &variable) + void PYBIND11_CONCAT(pybind11_init_, name)(pybind11::module &variable) NAMESPACE_BEGIN(PYBIND11_NAMESPACE) diff --git a/include/pybind11/embed.h b/include/pybind11/embed.h index 79ad0209c..6664967c1 100644 --- a/include/pybind11/embed.h +++ b/include/pybind11/embed.h @@ -44,11 +44,11 @@ } \endrst */ #define PYBIND11_EMBEDDED_MODULE(name, variable) \ - static void pybind11_init_##name(pybind11::module &); \ - static PyObject *pybind11_init_wrapper_##name() { \ - auto m = pybind11::module(#name); \ + static void PYBIND11_CONCAT(pybind11_init_, name)(pybind11::module &); \ + static PyObject PYBIND11_CONCAT(*pybind11_init_wrapper_, name)() { \ + auto m = pybind11::module(PYBIND11_TOSTRING(name)); \ try { \ - pybind11_init_##name(m); \ + PYBIND11_CONCAT(pybind11_init_, name)(m); \ return m.ptr(); \ } catch (pybind11::error_already_set &e) { \ PyErr_SetString(PyExc_ImportError, e.what()); \ @@ -59,8 +59,9 @@ } \ } \ PYBIND11_EMBEDDED_MODULE_IMPL(name) \ - pybind11::detail::embedded_module name(#name, pybind11_init_impl_##name); \ - void pybind11_init_##name(pybind11::module &variable) + pybind11::detail::embedded_module name(PYBIND11_TOSTRING(name), \ + PYBIND11_CONCAT(pybind11_init_impl_, name)); \ + void PYBIND11_CONCAT(pybind11_init_, name)(pybind11::module &variable) NAMESPACE_BEGIN(PYBIND11_NAMESPACE)