From c77c9fc85ca6b9fc111b1a3d8a84c3903e3dd646 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Tue, 3 Jan 2023 17:42:11 +0200 Subject: [PATCH] Make Console references static instead of extern This avoids unresolved external errors on MSVC. It's not ideal because every translation unit will have its own copy of the references and initialize them separately, but the overhead for calling the instance accessor function is not too large. --- source/io/console.cpp | 4 ---- source/io/console.h | 7 ++++--- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/source/io/console.cpp b/source/io/console.cpp index abb872d..0ac05c6 100644 --- a/source/io/console.cpp +++ b/source/io/console.cpp @@ -68,9 +68,5 @@ Console &Console::instance(Stream s) throw invalid_argument("Console::instance"); } -Console &cin = Console::instance(Console::CIN); -Console &cout = Console::instance(Console::COUT); -Console &cerr = Console::instance(Console::CERR); - } // namespace IO } // namespace Msp diff --git a/source/io/console.h b/source/io/console.h index 1755659..fe777cc 100644 --- a/source/io/console.h +++ b/source/io/console.h @@ -65,9 +65,10 @@ public: static Console &instance(Stream); }; -MSPCORE_API extern Console &cin; -MSPCORE_API extern Console &cout; -MSPCORE_API extern Console &cerr; +// TODO make these inline instead of static when upgrading to C++17. +static Console &cin = Console::instance(Console::CIN); +static Console &cout = Console::instance(Console::COUT); +static Console &cerr = Console::instance(Console::CERR); } // namespace IO } // namespace Msp -- 2.43.0