rug-compling/alpinocorpus — comment on commit d118c8de40689c91a01d5d097f5127565f6ec318
File:  line 0
By danieldk:

*It is necessary because if you want to compile against the library, you want to know what version you have,*

Why? All x.y major versions are API/ABI stable, and the interface is clearly defined. Why does anyone need the library version?

*features are supported. Runtime errors will not do.*

It's clear what features are supported: you can open a corpus through a factory method, you can iterate over it, you can iterate over query results, and you can retrieve the contents of an entry. Runtime errors will do fine if the user tries to open a corpus for which no reader exists. Actually, they are clearly preferred, since they decouple a program and the library.

*Config.hh only supplies defines, Compiling with or without DBXML (or SSL) has no effect on what public symbols appear in the library.*

Of course it does: compiling without DBXML support removes the DbCorpusReader, and hence its symbols. If programs use the ALPINOCORPUS_WITH_DBXML define, they use it to check whether DbCorpusReader(/Writer) is present. If it had no effect, why would you export such definitions?