我正在尝试用armcc编译一个已存在的项目(专为gcc设计)。 出于某种原因,我得到以下演员的#119错误:
(keyCert)(pCertHeader->flags)
我发现它很奇怪,因为flags变量来自uint32_t类型,而keyCert类型实际上是uint32_t。
typedef union {
struct {
uint32_t a:4;
uint32_t b:28;
}c;
uint32_t d;
} keyCert;
这种行为可能是什么原因? 请注意,我能够使用gcc编译它。 谢谢!
答案 0 :(得分:1)
我发现它很奇怪,因为flags变量来自uint32_t类型,而keyCert类型实际上是uint32_t。
错误,$http.get(url).then(function(response){
$scope.employees =response.data;
});
类型为keyCert
。编译器不知道您是否在union {...}
中存储struct c
或uint32_t d
,因此编译器不能认为它是keyCert
。 GCC可能不会抛出任何错误的原因是因为它是编译器扩展。 ISO C禁止此类铸造。
即使在GCC中,如果使用C99严格模式编译它,您将收到以下消息:
警告:ISO C禁止强制转换为联合类型[-Wpedantic]