From f4b0d09e3f782511b99626104ca960dd5decd4b8 Mon Sep 17 00:00:00 2001 From: Michael Forney Date: Wed, 20 Nov 2019 01:22:06 -0800 Subject: Declare globals as extern in headers, and define in source file Otherwise, each source file that includes the header gets its own definition, and according to the C standard (C99 6.9p5): > If an identifier declared with external linkage is used in an > expression (other than as part of the operand of a sizeof operator > whose result is an integer constant), somewhere in the entire > program there shall be exactly one external definition for the > identifier Most compilers use the .bss section for zero data, but if it uses .data instead, or if -Wl,--warn-common is used, this will cause a linking error. --- state.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'state.c') diff --git a/state.c b/state.c index 154e16d..a661ce7 100644 --- a/state.c +++ b/state.c @@ -25,6 +25,9 @@ #include "bounce.h" +bool stateNoNames; +enum Cap stateCaps; + typedef void Handler(struct Message *msg); static void require(const struct Message *msg, bool origin, size_t len) { -- cgit 1.4.1