probSAT https://github.com/adrianopolus/probSAT を試してみる。

コンパイルしようとしたらclangさんが以下のようなエラーを出してくれた。 これらの関数はinline関数として定義されている関数なんだけれど、そういえばC99のinlineは外部定義を生成しないから、こういうことが起こりうるのだな。 話には聞いたことがあったが、実際に自分で遭遇すると、何だか狐につままれた気分である。 とりあえず、 static inline に変更して対応。

Undefined symbols for architecture x86_64:
  "_parseFile", referenced from:
      _main in probSAT-db9ee7.o
  "_pickAndFlip", referenced from:
      _setupParameters in probSAT-db9ee7.o
      _main in probSAT-db9ee7.o
     (maybe you meant: _pickAndFlipVar)
  "_pickAndFlipNC", referenced from:
      _setupParameters in probSAT-db9ee7.o
      _main in probSAT-db9ee7.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

参考: Using extern inline
https://github.com/ytomino/headmaster/wiki/Using-extern-inline