Fix const struct to work with C++ compilation
authorMark Harris <mark.hsj@gmail.com>
Fri, 7 Aug 2015 08:25:35 +0000 (01:25 -0700)
committerJean-Marc Valin <jmvalin@jmvalin.ca>
Fri, 7 Aug 2015 17:25:33 +0000 (13:25 -0400)
This allows the libopus source files to be compiled with a C++ compiler,
by ensuring that the "extern const MLP net" declaration is visible at
the point of the "const MLP net" in src/mlp_data.c.  Otherwise it will
default to static linkage in C++, resulting in an undefined symbol.

Note that if compiled with a C++ compiler the symbols will be mangled,
so don't do that if you want to be able to call it from C code or run
the tests (which still require a C compiler).

src/analysis.c
src/mlp.h

index 2ee8533..401a43e 100644 (file)
@@ -39,8 +39,6 @@
 #include "mlp.h"
 #include "stack_alloc.h"
 
-extern const MLP net;
-
 #ifndef M_PI
 #define M_PI 3.141592653
 #endif
index 053b23b..618e246 100644 (file)
--- a/src/mlp.h
+++ b/src/mlp.h
@@ -36,6 +36,8 @@ typedef struct {
     const float *weights;
 } MLP;
 
+extern const MLP net;
+
 void mlp_process(const MLP *m, const float *in, float *out);
 
 #endif /* _MLP_H_ */