将全局变量传递给函数 - C ++

时间:2013-10-30 16:33:42

标签: c++ function pointers global-variables

我正在为路由器编写代码,并且我已经将它编写到我应该为路由表编写代码的部分。我做了一个看起来像这样的课:

//Global variables
unsigned char Dst_IP[4];
unsigned char Nxt_Hop[4];
int Mask;
int OutIF;

RTEntry::RTEntry(unsigned char *dst_IP, int mask, int outIF, unsigned char *nxt_Hop)
{
    Dst_IP = dst_IP;
    Mask = mask;
    OutIF = outIF;
    Nxt_Hop = nxt_Hop;
}

bool match(unsigned char *IPaddress)
{
    bool isMatch = false;

    if(IPaddress == dst_IP)
    {
        isMatch = true;
    }

    return isMatch;
}

我尝试编译时遇到错误,因为dst_IP没有在match函数的范围内声明。有没有人知道如何解决这个问题?它可能与指针有关。我应该提一下,我对C ++很陌生。

提前致谢!

1 个答案:

答案 0 :(得分:0)

(我假设你在globals前面的private关键字是编译器提供的一些非标准扩展。使用标准C ++,那里不允许使用该关键字。)

C ++区分大小写。全局变量名为Dst_IP,但在match()中您编写了dst_IP

相依:

要比较C字符串,请使用std::strcmp()std::strncmp()(如果您希望从<cstring>标题中获得更多安全性以及可能不是NULL终止的字符串,请使用后者。在指针上使用==运算符时,它只是比较指针,而不是它们指向的内容。或者更好的是,使用std::string而不是原始C字符串。