首页
学习
活动
专区
圈层
工具
发布

Keil _(_
EN

Stack Overflow用户
提问于 2017-11-13 10:10:44
回答 1查看 1.2K关注 0票数 1

我可以进入这个项目。它是在Keil vision 5中编译的。当我编译这个项目时,它没有错误。但是,当我访问一个头文件时,它会显示一个错误,说明s8变量有以下错误=错误:未知类型名称's8'

代码语言:javascript
复制
    typedef struct
    {
      s8 str[PARAM_TEXT_SIZE];
    }
    text_struct;

该变量的定义如下:

代码语言:javascript
复制
   typedef char   s8;

我想知道我是否错配置了编译器,或者为什么编译后忽略了这个错误。

PS:这是我在StackOverflow网站上的第一个问题。如果我的问题不清楚或者放错了,很抱歉。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-13 11:50:49

如果s8是在头中定义的,假设是foo.h,而您的text_struct是在另一个标头中定义的,那么如果包含bar.h的文件首先包含foo.h,那么它就可以很好地编译。然而,它是不干净的,这通常是一个良好的做法,不依赖于这样的先决条件包括。

下面是一个非常简单的例子:

foo.h

代码语言:javascript
复制
typedef int myType;

bar.h

代码语言:javascript
复制
typedef struct {
    myType x;
} myStruct;

main.c

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

#include "foo.h"
#include "bar.h"

myStruct y;

int main(void) {
    return 0;
}

但是,如果bar.h是静态计算的,那么它将产生一个错误,因为这里不知道myType。如果bar.h也包含在没有foo.h的情况下,那么您将有一个编译错误。下面是一个例子:

error.c

代码语言:javascript
复制
#include "bar.h"

myStruct z;

gcc -I.-o错误.o 文件中包含从error.c:1:0: bar.h:2:5: error:未知类型名称' myType ' myType x;

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47261797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档