* Interface to GiNaC's light-weight expression handles. */
/*
- * GiNaC Copyright (C) 1999-2008 Johannes Gutenberg University Mainz, Germany
+ * GiNaC Copyright (C) 1999-2015 Johannes Gutenberg University Mainz, Germany
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#ifndef __GINAC_EX_H__
-#define __GINAC_EX_H__
+#ifndef GINAC_EX_H
+#define GINAC_EX_H
+#include "basic.h"
+#include "ptr.h"
+
+#include <functional>
#include <iosfwd>
#include <iterator>
-#include <functional>
#include <stack>
-#include "basic.h"
-#include "ptr.h"
-
namespace GiNaC {
-
+#ifdef _MSC_VER
+ // MSVC produces a different symbol for _ex0 when it is declared inside
+ // ex::is_zero() than when it is declared at top level as follows
+ extern const ex _ex0;
+#endif
/** Helper class to initialize the library. There must be one static object
* of this class in every object file that makes use of our flyweights in
// comparison
int compare(const ex & other) const;
bool is_equal(const ex & other) const;
- bool is_zero() const { extern const ex _ex0; return is_equal(_ex0); }
+ bool is_zero() const {
+#ifndef _MSC_VER
+ extern const ex _ex0;
+#endif
+ return is_equal(_ex0);
+ }
bool is_zero_matrix() const;
// symmetry
} // namespace std
-#endif // ndef __GINAC_EX_H__
+#endif // ndef GINAC_EX_H