undefinierte Referenz beim Aufruf der Inline-Funktion

Ich erhalte einen merkwürdigen Fehler von GCC 4.8.1 mit Inline-Funktionen.

Ich habe zwei nahezu identische Inline-Funktionen in Header-Dateien definiert (debug.h underror.h) imsrc/include/, mit dem einzigen Unterschied, was sie drucken - ein PräfixDEBUG: auf die Nachricht und die andere%s: error: %s (Programmname, Fehlermeldung). Beim Definieren der Funktionen sowohl inline als auch beim Kompilieren eines Debugbuilds (so wird das Makro gesetzt)DEBUG=1) Erhalte ich viele undefinierte Referenzfehler:

src/main_debug.o
  gcc -osrc/main_debug.o src/main.c -c -Wall -Wextra -Wpedantic -std=gnu11 -march=native -Og -g -DCC="\"gcc\"" -DCFLAGS="\"-Wall -Wextra -Wpedantic -std=gnu11 -march=native -Og -g\"" -DDEBUG=1 -DBTCWATCH_VERSION="\"0.0.1\""

src/lib/btcapi_debug.o
  gcc -osrc/lib/btcapi_debug.o src/lib/btcapi.c -c -Wall -Wextra -Wpedantic -std=gnu11 -march=native -Og -g -DCC="\"gcc\"" -DCFLAGS="\"-Wall -Wextra -Wpedantic -std=gnu11 -march=native -Og -g\"" -DDEBUG=1

src/lib/libbtcapi_debug.a
  ar rc src/lib/libbtcapi_debug.a src/lib/btcapi_debug.o
  ranlib src/lib/libbtcapi_debug.a

src/lib/cmdlineutils_debug.o
  gcc -o src/lib/cmdlineutils_debug.o src/lib/cmdlineutils.c -c -Wall -Wextra -Wpedantic -std=gnu11 -march=native -Og -g -DCC="\"gcc\"" -DCFLAGS="\"-Wall -Wextra -Wpedantic -std=gnu11 -march=native -Og -g\"" -DDEBUG=1

src/lib/libcmdlineutils_debug.a
  ar rc src/lib/libcmdlineutils_debug.a src/lib/cmdlineutils_debug.o
  ranlib src/lib/libcmdlineutils_debug.a

debug
  gcc -obtcwatch-debug src/main_debug.o -Lsrc/lib/ -lbtcapi_debug -lcmdlineutils_debug -lcurl  -ljansson 
src/main_debug.o: In function `main':
/home/marcoms/btcwatch/src/main.c:148: undefined reference to `debug'
src/main_debug.o:/home/marcoms/btcwatch/src/main.c:185: more undefined references to `debug' follow
collect2: error: ld returned 1 exit status
make: *** [debug] Error 1

Aber sich ändernddebug()'s Definition zustatic inline behebt die fehler Ich habe aber noch nie Fehler von erhaltenerror()'s Definition, obwohl seine Verteidigung istinline, und nichtstatic inline.

Die Definitionen befinden sich alle in Überschriften (d. H. Ohne Prototyp).

Antworten auf die Frage(1)

Ihre Antwort auf die Frage