【问题标题】:bsd gcc preprocessor macro ##x## doesn't give a valid preprocessing tokenbsd gcc 预处理器宏##x## 未提供有效的预处理令牌
【发布时间】:2014-02-14 17:47:10
【问题描述】:

当我尝试编译时,我遇到了很多错误:

km6502ot.h:77:1: error: pasting "Opcodei" and "(" does not give a valid preprocessing token

我在 OSX 上,我可以通过手动解决所有可能的问题,但是是否可以修复这个宏,以便 gcc 可以平静地吃掉它:

#define OP__(i) \
    case 0x##i##: \
        Opcode##i##(__THISP); \
        break;
#define OP_d(i) \
    case 0x##i##: \
        if (__THIS__.P & D_FLAG) \
            D_Opco##i##(__THISP); \
        else \
            Opcode##i##(__THISP); \
        break;

【问题讨论】:

标签: c macos gcc macros


【解决方案1】:

试试这个

#define OP__(i) \
    case 0x##i : \
        Opcode##i (__THISP); \
        break;
#define OP_d(i) \
    case 0x##i : \
        if (__THIS__.P & D_FLAG) \
            D_Opco##i (__THISP); \
        else \
            Opcode##i (__THISP); \
        break;

【讨论】:

  • 你能解释一下“##x##”和“##x”之间的区别吗?
  • @user3232170 ## 这就是标识符。它未连接( 等。创建的标识符不应该是无效的。
猜你喜欢
  • 2011-06-07
  • 1970-01-01
  • 2020-02-26
  • 2015-04-05
  • 2011-09-01
  • 2021-12-29
  • 1970-01-01
  • 2016-12-14
  • 1970-01-01
相关资源
最近更新 更多