小编feo*_*eos的帖子

GCC中宏中的函数的存储类无效

我有这个传统的宏

#define ASYNC_FUNCTION(x)                                               \
void x(void) {                                                          \
    static void internal ## x (ASYNCIOCB *);                            \
    ASYNCIOCB *aiocb = AcquireAsyncIOCB();                              \
    CallAsyncNativeFunction_md(aiocb, internal ## x);                   \
}                                                                       \
static void internal ## x (ASYNCIOCB *aiocb)
Run Code Online (Sandbox Code Playgroud)

接着是这一个

#define ASYNC_FUNCTION_START(x)  ASYNC_FUNCTION(x) {
#define ASYNC_FUNCTION_END       ASYNC_resumeThread(); }
Run Code Online (Sandbox Code Playgroud)

它们的用途如下:

ASYNC_FUNCTION_START(Occasional_function_name)
{
    //actual stuff    
}
ASYNC_FUNCTION_END
Run Code Online (Sandbox Code Playgroud)

它与cl编译很好,但是gcc给出了

invalid storage class for function ‘internalOccasional_function_name’
     static void internal##x (ASYNCIOCB *);    
                 ^
Run Code Online (Sandbox Code Playgroud)

我试图扩展它们只是为了看它变成什么并且没有发现任何损坏.我还在文件中搜索了未闭合的弧形括号,并找到了这样的其他宏

#define Foo_Bar1()  {                                                \
  extern int foo;                                                    \
  int bar = foo;                                                     \
  if (condition) …
Run Code Online (Sandbox Code Playgroud)

c macros gcc

1
推荐指数
1
解决办法
3万
查看次数

限制 WINAPI 中的调整大小方向

我需要禁用除 之外的所有调整大小WMSZ_BOTTOM,包括禁用相应的鼠标图标。

处理WM_GETMINMAXINFO没有帮助,因为它是在窗口矩形调整(内部WM_CREATE)之前调用的,所以我没有什么可设置的。我尝试复制当前矩形并将其设置为WM_SIZINGlParam但是何时调用该副本没有完美的点GetWindowRect(),因为有时当我移动窗口然后通过拖动非预期的边来调整其大小时,它会跳到之前的位置(旧的)矩形得到恢复)。这些看起来像是黑客行为,而不是某种聪明的方法。

当鼠标悬停在窗口边框而非底部时,如何禁用调整鼠标图标大小?

c c++ winapi resize

0
推荐指数
1
解决办法
990
查看次数

标签 统计

c ×2

c++ ×1

gcc ×1

macros ×1

resize ×1

winapi ×1