我如果在commsci.c中定义了一个全局变量,在main.c中通过extern声明后使用,这样的话编译器会报.ebss空间不足,而如果我在.h中定义,在另一个.h中声明extern,在通过包含头文件的方式来引用外部变量,则不会出现错误。
我想全局变量的话编译器应该都是分配一个地址,为什么这两种情况对.ebss的空间占用却不同呢?
Eric Ma:
一般的编写方法,不会在头文件中定义变量的,因为如果这个头文件被多个C文件引用的话,会出现重复定义的报错。如果在.c中定义全局变量,然后出现.ebss空间不足,那么就应该是空间不足。
Eric
我如果在commsci.c中定义了一个全局变量,在main.c中通过extern声明后使用,这样的话编译器会报.ebss空间不足,而如果我在.h中定义,在另一个.h中声明extern,在通过包含头文件的方式来引用外部变量,则不会出现错误。
我想全局变量的话编译器应该都是分配一个地址,为什么这两种情况对.ebss的空间占用却不同呢?
哟:
回复 囧:
非常感谢,忘记这招了!