diff --git a/openblas_config_template.h b/openblas_config_template.h
index 52dd49d..239219d 100644
--- a/openblas_config_template.h
+++ b/openblas_config_template.h
@@ -64,6 +64,7 @@ typedef int blasint;
 #ifndef __cplusplus
   #include <complex.h>
 #endif
+  #ifndef OPENBLAS_COMPLEX_STRUCT
   typedef float _Complex openblas_complex_float;
   typedef double _Complex openblas_complex_double;
   typedef xdouble _Complex openblas_complex_xdouble;
@@ -76,7 +77,9 @@ typedef int blasint;
   #define openblas_complex_double_imag(z)            (cimag(z))
   #define openblas_complex_xdouble_real(z)           (creal(z))
   #define openblas_complex_xdouble_imag(z)           (cimag(z))
+  #endif
 #else
+  #ifndef OPENBLAS_COMPLEX_STRUCT
   #define OPENBLAS_COMPLEX_STRUCT
   typedef struct { float real, imag; } openblas_complex_float;
   typedef struct { double real, imag; } openblas_complex_double;
@@ -90,4 +93,5 @@ typedef int blasint;
   #define openblas_complex_double_imag(z)            ((z).imag)
   #define openblas_complex_xdouble_real(z)           ((z).real)
   #define openblas_complex_xdouble_imag(z)           ((z).imag)
+  #endif
 #endif
