我正在尝试定义以下宏:
#if defined(_MSC_VER)
#define PRAGMA_PACK_PUSH(n) __pragma(pack(push, n))
#define PRAGMA_PACK_POP() __pragma(pack(pop))
#else
#define PRAGMA_PACK_PUSH(n) #pragma (pack(push, n))
#define PRAGMA_PACK_POP() #pragma (pack(pop))
#endif
Run Code Online (Sandbox Code Playgroud)
但是我在 Linux 上收到以下错误 -
error: '#' is not followed by a macro parameter
#define PRAGMA_PACK_PUSH(n) #pragma (pack(push, n))
Run Code Online (Sandbox Code Playgroud)
它指向语句中的第一个 ')'
如何定义包含# 的宏?
解决方案更新:
如本线程Pragma 在定义宏中所述,有效的语法是:
#if defined(_MSC_VER)
#define PRAGMA_PACK_PUSH(n) __pragma(pack(push, n))
#define PRAGMA_PACK_POP() __pragma(pack(pop))
#else
#define PRAGMA_PACK_PUSH(n) _Pragma("pack(push, n)")
#define PRAGMA_PACK_POP() _Pragma("pack(pop)")
#endif
Run Code Online (Sandbox Code Playgroud) 我明白什么是std :: future但是我不明白何时以及如何使用std :: shared_future和std :: promise,我在网上找不到一个好的解释.
我会很感激帮助我的头脑.
顺便说一下这里的例子并不是很清楚http://en.cppreference.com/w/cpp/thread/shared_future