我在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'
答案 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,而不要使用赋值运算符。