diff options
| author | Tony Wasserka <neobrainx@gmail.com> | 2015-01-30 15:00:17 +0100 |
|---|---|---|
| committer | Tony Wasserka <neobrainx@gmail.com> | 2015-01-30 15:00:17 +0100 |
| commit | 28702cbfeb1fe21109f8b1efa189785594319b78 (patch) | |
| tree | 64e4b1ec43b7699fe1a6ab1be1c688b6d63c0d75 /src/common | |
| parent | 206cabc0e4c3f49c548d38ed05cdabf11fcd8bb4 (diff) | |
| parent | d917a9bf7774fac3d7bccda761976615722ff3e6 (diff) | |
Merge pull request #503 from yuriks/kernel-lifetime4
Kernel Lifetime Reform Pt. 4
Diffstat (limited to 'src/common')
| -rw-r--r-- | src/common/common_funcs.h | 4 | ||||
| -rw-r--r-- | src/common/scope_exit.h | 4 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/common/common_funcs.h b/src/common/common_funcs.h index c2750a63c..229eb74c9 100644 --- a/src/common/common_funcs.h +++ b/src/common/common_funcs.h @@ -31,6 +31,10 @@ template<> struct CompileTimeAssert<true> {}; #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) +/// Textually concatenates two tokens. The double-expansion is required by the C preprocessor. +#define CONCAT2(x, y) DO_CONCAT2(x, y) +#define DO_CONCAT2(x, y) x ## y + #ifndef _MSC_VER #include <errno.h> diff --git a/src/common/scope_exit.h b/src/common/scope_exit.h index 263beaf0e..77dcbaa22 100644 --- a/src/common/scope_exit.h +++ b/src/common/scope_exit.h @@ -4,6 +4,8 @@ #pragma once +#include "common/common_funcs.h" + namespace detail { template <typename Func> struct ScopeExitHelper { @@ -34,4 +36,4 @@ namespace detail { * } * \endcode */ -#define SCOPE_EXIT(body) auto scope_exit_helper_##__LINE__ = detail::ScopeExit([&]() body) +#define SCOPE_EXIT(body) auto CONCAT2(scope_exit_helper_, __LINE__) = detail::ScopeExit([&]() body) |
