mErrCount:虽然在项目属性的include路径中声明了标识符,但未找到该标识符

mErrCount: Identifier not found although it is declared in the include path of Project properties

本文关键字:标识符 声明 路径 项目 include 属性 mErrCount      更新时间:2023-10-16

这是我的代码,名为test.cpp

#include <test.h>
namespace ScStdTb {
#define CFG_REG 0
#define CMD_REG 0x4
#define CTRL_REG 0x8
#define STAT_REG 0xC
void BasicTB::test()
{
        void testCase();
        
}
void testCase()
{
     unsigned int data = 0x0;
     data=1;
     REG_WRITE(CTRL_REG,&data);
}
}

REG_WRITE是TbCommBase.h 中定义的宏

以下是其中的代码片段:

/*macro for register read/write*/
#define REG_WRITE(reg, value) 
    if (send_transaction((reg), value, B_WR)) {
        mErrCount++;
        PRINT_DBG("Write failed : Reg at 0x"<< hex << (reg)
                <<", data 0x"<< value << dec);
    } else {
        wait_delta();
    }

在项目属性中,我添加了TbCommBase.h的路径项目->属性->配置属性->C/C++->其他包含目录。

mErrCount也在TbCommBase.h中定义

unsigned int                  mErrCount;

当我尝试编译test.cpp时,我会得到以下错误:

错误C2065:"mErrCount":未声明的标识符

错误C3861:"send_transaction":找不到标识符

错误C3861:"name":找不到标识符

错误C3861:"wait_delta":找不到标识符

文件TbCommBase.h中没有错误。它只在test.cpp中显示未声明的标识符,尽管我已经引用了标头。我已经类似地执行了以前的文件,没有任何问题。

有什么想法吗?

最后它非常简单。作用域解析运算符导致了此问题。

这是更新后的代码。

#include <ifxPkcTest.h>
namespace ScStdTb {
#define CFG_REG 0
#define CMD_REG 0x4
#define CTRL_REG 0x8
#define STAT_REG 0xC
void BasicTB::test()
{
        void testCase();
}
void BasicTB::testCase()              //SOLUTION
{
     unsigned int data = 0x0;
     data=1;
     REG_WRITE(CTRL_REG,&data);
}
}