Hacker News new | ask | show | jobs
by pionaryon 552 days ago
You can suppress function like macros by using parenthesis because function like macro expansion is literally defined as "name directly followed by open paren".

  #define foo(x) something
  void foo(int a) {} // doesn't work
  void (foo)(int a) {} // does work because 'foo)' can never be a function macro
1 comments

The error is coming from a WinRT header, not something they can easily control. It's similar to having something like `#define string(x) something` and then including <string>.