我有以下代码片段用3个全局指针结构:一些神秘与 '的extern' 指向struct用C
structs.h:
#pragma once
typedef struct Bignum {
int digit;
struct Bignum *next;
struct Bignum *prev;
} Bignum;
typedef struct Stack {
struct Bignum *head;
struct Bignum *tail;
char sign;
struct Stack *next;
} Stack;
Bignum *num_tail;
Bignum *num_head;
Stack *stack_head;
globals.c:
#include "structs.h"
Bignum *num_tail;
Bignum *num_head;
Stack *stack_head;
当我编译这些与其他.C文件(wher e口包括structs.h和工作与num_tail,num_head和stack_head),编译器(两者铛版本3.8.0和GCC 5.4.0)通过编译程序和工程验证码正如它应该。但是,就我而言,此代码不应该正常编译和工作,因为缺少extern
修饰符structs.h。它为什么有效? :)
UPD:是的,答案是暂定义。真的,在初始化指向NULL
的指针之后,编译器会给出错误消息。感谢所有的答复!
查找“暂定义C” – Peter
尝试将头文件包含到2个不同的'.c'文件中,看看发生了什么.... – LPs
这是一个[链接](https://github.com/Alkaizyr/Polish-calculator)存储与此程序。标题包含在所有.c文件中,一切正常。 –