为什么此代码在'之前提供了预期的主要表达式,'令牌'编译错误?

时间:2017-08-11 10:41:28

标签: c++ struct

编译时我在标题中声明了以下错误消息,并且不知道错误。我试图将一个结构数组传递给一个函数。失败时出现以下错误:

  

错误消息错误:在'之前预期的primary-expression,'令牌

gpio.h

#ifndef __GPIO_H__
#define __GPIO_H__

#include <stdint.h>
#include "settings.h"

int open(config *configureGpio, bool *result);

#endif

settings.h

#ifndef __SETTINGS_H__
#define __SETTINGS_H__

#include <stdint.h>

#define OUTPUT          1
#define INPUT           0
#define HIGH            1
#define LOW             0

struct config
{
    int nPin;
    bool bOut;
    bool bIHigh;
};

config gpioConfig[4] =
{
    {8, OUTPUT, LOW},
    {4, INPUT,  LOW},
    {3, INPUT,  LOW},
    {2, INPUT,  LOW}
};
#endif

gpio.cpp

#include "gpio.h"

int open(config *configureGpio, bool *res)
{
    return 0;
}

的main.cpp

#include "gpio.h"
#include "settings.h"

int main() {
    bool res = false;
    open(config, &res);
}

1 个答案:

答案 0 :(得分:0)

您不能将data-type作为参数传递,而是传递变量。同样,当传递数组时要小心落入array decaying to pointer。因此,您应该将大小作为单独的参数传递。

所以你的代码看起来像这样:

int open(config *configureGpio, const int size, bool *res){
    for(int i(0); i < size; i++)
        ;// do something
    return 0;
}