C-跨包含文件的typedef
我目前正在从事一个c项目,为了使我的代码有条理,我使用了include文件。一个文件includes.h有一个typedef,我不想在另一个包含文件util.h/util.c中访问它。我按照以下顺序将它们都包含在main.c中:includes.h util.h 主要条款c: util.h: util.c: 您需要添加C-跨包含文件的typedef,c,C,我目前正在从事一个c项目,为了使我的代码有条理,我使用了include文件。一个文件includes.h有一个typedef,我不想在另一个包含文件util.h/util.c中访问它。我按照以下顺序将它们都包含在main.c中:includes.h util.h 主要条款c: util.h: util.c: 您需要添加 #include "includes.h" 在util.h中,以使代码能够编译 这是因为您依赖于可传递的include指令将MyStructType typedef从main.
#include "includes.h"
在util.h中,以使代码能够编译
这是因为您依赖于可传递的include指令将MyStructType typedef从main.c获取到util.h,但在util.c中没有这样做
出于可维护性的目的,最好的解决方案是尽量减少对可传递包含的依赖:您应该在需要的地方包括includes.h。在本例中,在util.h中。有关编译器错误的问题应该始终包括完整的错误消息。下次我会这样做,我认为没有必要,因为这不是一个明确的错误,但是我把系统弄错了。就我个人而言,我一次都不喜欢布拉格语。它是非标准的,它有一个严重的致命缺陷。看,谢谢,我要改变这一点。
#pragma once
struct structname
{
int number;
};
typedef struct structname MyStructType;
#pragma once
#include "includes.h" //added line (>accepted answer)
int util_foo(MyStructType blabla);
#include <stdio.h>
#include "util.h"
int util_foo(MyStructType blabla)
{
printf("%d\n", blabla.number);
return 0;
}
#ifndef STH_SIMILAR_TO_FILENAME
#define STH_SIMILAR_TO_FILENAME
//code
#endif
#include "includes.h"