【问题标题】:'for' macro is causing function definition to be not found by Visual Studio 2015“for”宏导致 Visual Studio 2015 找不到函数定义
【发布时间】:2017-02-24 01:25:54
【问题描述】:

我在使用 Visual Studio 2015 时遇到了一个奇怪的问题。每当我使用函数下方的宏时,我正在使用它的函数对 Visual Studio 来说都是未定义的。值得一提的是,这只是一个视觉问题,在编译时不会造成任何问题。还值得一提的是,这仅在我使用变量作为最大值时才会发生。这是宏:

#define fiz(MAX_VALUE) for (unsigned int i = 0; i < (MAX_VALUE); i++)

void functionFoo() 
{
    unsigned int max_val = 10;
    fiz(max_val) { // if I use 10 here I don't experience the same issue
        /* do stuff */
    }
}

编辑: 所以我的问题是,是否有其他人遇到过相同/类似的问题,他们是否能够解决? 编辑2: 经过进一步搜索,我遇到了this question。显然,自 Visual Studio 2005 以来,此问题(或根据文章与性能相关的设计选择)一直存在。遵循该链接中的解决方案已解决了该问题。

【问题讨论】:

  • 在循环前创建i并在循环中初始化
  • @Jguillot 感谢您的快速回复。无论我在哪里声明i,仍然遇到同样的问题
  • 编译器是怎么说的?
  • 编译没有问题,所以什么也没说。这是一个视觉错误,导致我的函数声明显示为未定义。
  • 问题是什么?你忘了问一个。

标签: c visual-studio-2015


【解决方案1】:

MAX_VALUE 是一个现有定义,因此您的宏通过将 MAX_VALUE 替换为一个大整数来获得“宏”。

那么,你的代码中的行与宏定义不匹配,无法替换。

尝试使用除 MAX_VALUE 之外的其他词(任何)。

【讨论】:

  • 嗨。遗憾的是更改参数名称并没有解决问题(尝试使用MYMAXVAL
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-21
相关资源
最近更新 更多