我有一个h1.h包含以下变量声明的头文件:
h1.h
struct namespaces
{
char *soap_env;
char *soap_enc;
char *xsd;
char *xsi;
} ns;
Run Code Online (Sandbox Code Playgroud)
我包括头文件h1.h在2个C文件c1.c和c2.c.
c1.c
#include "h1.h"
Run Code Online (Sandbox Code Playgroud)
c2.c
#include "h1.h"
Run Code Online (Sandbox Code Playgroud)
我希望在构建中出错,但我没有.在构建中没有错误也没有警告.
这是正常的吗?
在程序运行时,此类问题是否会导致未定义的行为?
每个C源文件都由编译器单独处理,因此您不必担心两个不同的源文件包含相同的头文件.
如果您尝试在单个源文件中包含相同的头文件,则会出现问题.这就是为什么在头文件中包含保护(pragma或#ifndef ...)是C编程中广泛采用的习惯用法.