头文件中的结构在源文件中产生错误

时间:2018-06-25 14:16:15

标签: c struct

我在capi_utils.h内部定义了一个结构,如下所示:

#ifndef _CAPI_UTILS_H_
# define _CAPI_UTILS_H_

...

struct ScalarVariable{
    char name[63];
    float value;
    uint8_T DataID;
    char type[50];
};

...
#endif

capi_utils.c内,我尝试创建一个变量来保存这样的结构

struct ScalarVariable sVariable;

仅当我尝试在结构体内部设置一个值时才会产生错误:

sVariable.name = paramName;

错误消息是:

capi_utils.c:27: error: invalid use of undefined type `struct ScalarVariable'

我在做什么错?

编辑1:

我只需要包含capi_utils.h。没想到我必须这样做,因为我由于某种原因而理解了源文件和头文件。

编辑2:

为了澄清,在尝试设置DataID时,不仅是数组,甚至出现错误。

void GetValueFromAdress(const char_T*  paramName,
                     void*          paramAddress,
                     uint8_T        slDataID,
                     unsigned short isComplex,
                     uint_T*        actualDims,
                     uint_T         numDims,
                     real_T         slope,
                     real_T         bias) {

sVariable.DataID = slDataID;

}

会产生error: invalid use of undefined type 'struct ScalarVariable'

1 个答案:

答案 0 :(得分:1)

'use strict'; angular.module('frontEndApp') .config(['$provide', '$httpProvider', function ($provide, $httpProvider, $translate, toastr, CONST) { $provide.factory('unauthorisedInterceptor', ['$q', function ($q) { return { 'responseError': function (rejection) { if (rejection.status === (401)) { window.location.href = '/#/login'; } if (rejection.status === (405)) { window.location.href = '/#/login'; $translate('createsuccess') .then(function (translatedMessage) { toastr.success(translatedMessage, { 'timeOut': CONST.TOAST.timeOut, 'extendedTImeout': CONST.TOAST.extendedTImeout, 'progressBar': CONST.TOAST.progressBar, 'closeButton': CONST.TOAST.closeButton, 'showMethod': CONST.TOAST.showMethod, 'hideMethod': CONST.TOAST.slideUp }); }); } return $q.reject(rejection); } }; }]); $httpProvider.interceptors.push('unauthorisedInterceptor'); }]); 中,您需要包含头文件,如下所示:

cape_utlis.c

此外,更改此:

#include cape_utlis.h

对此:

sVariable.name = paramName;

为了在C语言中复制以NULL结尾的字符串,请使用函数strcpy,而不要使用赋值运算符。