Mar*_*ark 1 c programming-languages
我遇到了这样一段代码:
啊:
#include "b.h"
/* structure definitions, macros etc. */
Run Code Online (Sandbox Code Playgroud)
BH:
#include "a.h"
/* structure definitions, macros etc. */
Run Code Online (Sandbox Code Playgroud)
从C标准来看这是合法的吗?我认为这种方法并不安全.
这是合法的。据我所知,所有编译器都施加了嵌套限制,通常在 20 到 50 的范围内。递归(如果有用)可以通过条件轻松控制:
#if NESTING < 5
#define NESTING NESTING+1
#include "myself.h"
#endif
Run Code Online (Sandbox Code Playgroud)
作为一名程序员,有成千上万种搬起石头砸自己脚的方法。这只是又一种方式。当心。
你需要使用包含警卫.那就安全了.
a.h
#ifndef A_H
#define A_H
/* ... */
#endif
Run Code Online (Sandbox Code Playgroud)