繁体   English   中英

包含头文件会导致类型冲突

[英]Including header file causes conflicting types

所以我将这个结构保存在一个名为h1.h的头文件中

typedef struct{
    int a;
    int b;
    special_t test;
} randomDataType

因此,我包括了包含special_t声明的头文件。 两个头文件中的函数都没有被命名为相同的函数,而且我看不到循环依赖会如何发挥作用,因为仅通过h1.h中声明的函数才能访问第二个头文件中声明的函数。

但是对于其他标头中的所有内容,我都有“ _ _的先前声明”错误。 为什么是这样?

听起来您的头文件上没有多个包含保护。 除了极少数情况下您会知道它们时,C头文件应这样写:

/* This is h1.h.
   This is its license.

   This is what you will find here. */

#ifndef H1_H__
#define H1_H__

all declarations go here

#endif /* h1.h */

除了注释,在#ifndef ... #endif块之外不应有任何其他内容,并且您需要选择宏名称,以使其与任何其他头文件都不会冲突-假定所有 C头文件都在其中包含此构造他们或类似的东西。

它的作用是让您可以#include "h1.h"多次#include "h1.h" 编译器将只处理其内容一次。 许多编译器都认可这种构造,甚至不会再次打开文件(只要仍然定义了宏)。 因此,您可以安全地包含其他标头(可能只需要几个声明)中的标头,而不必担心其他文件已完成的工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM