如何将静态const char作为参数传递给函数?

时间:2019-02-14 09:33:05

标签: c++

我有一个函数可以执行多次,并且我只希望变量在第一次运行时声明一次,因为要检查的变量的完整列表,所以我使用了static const进行声明这些变量在函数中。

我想将static const char数组之一传递给从此函数内调用的函数。我尝试使用指针并通过引用传递,但是我不断遇到不兼容的参数类型错误,说const char *与参数不兼容。

如何将静态const char数组传递给函数?对我来说,在函数中声明它们是没有意义的,因为它是一个列表,并且该函数仅应检查其中之一,将其作为参数传递时很容易做到。

功能1:

void searchFunc(int numOfBytes, char msgtxt[]) {

    static const char msg1[] = { 0x11, 0xFF };                            
    static const char msg1resp[] = { 0x0066, 0x03, 0xFF, 0x55, 0x00, 0x83 };

    static const char msg2[] = { 0x03, 0x00, 0x6A };                     
    static const char msg2resp[] = { 0x00, 0x05, 0x42, 0x1A, 0x80, 0x5A };

    if (num == 5) {
        respond(msgtxt, 2, 4, msg1, msg1resp); 
    } else if (num == 6) {
        respond(msgtxt, 2, 5, msg2, msg2resp); 
    }
}

函数2定义有错误:

void respond(char msgtxt[], int startArr, int endArr, char commandmsg[], char responsemsg[]);

“ const char *”类型的参数与“ char *”类型的参数不兼容

1 个答案:

答案 0 :(得分:3)

您不能将const指针传递给带有指针的函数。

static const char msg1[] = { 0x11, 0xFF };

声明msg1const char*,但是respond()接受char msgtxt[],即char*作为参数。

因此,要执行此操作,您的respond函数应具有签名

void respond(const char*, int, int, const char*, const char*);

一般规则:未修改的对象的引用和指针应为const。这也适用于您的searchFunc()

void searchFunc(int numOfBytes, const char*msgtxt) { ... }