diff --git a/Common/Core/vtkFloatingPointExceptions.cxx b/Common/Core/vtkFloatingPointExceptions.cxx
index d76768030b58524a93e3f416e67d2915d62cae36..8624f31f655f8d4361aa0e2d7a4714d0695d8c54 100644
--- a/Common/Core/vtkFloatingPointExceptions.cxx
+++ b/Common/Core/vtkFloatingPointExceptions.cxx
@@ -19,6 +19,7 @@
 
 #if defined(VTK_USE_FENV)
 #include <csignal>
+#include <cstdio>
 #include <fenv.h>
 #endif
 
@@ -33,9 +34,10 @@
 namespace
 {
 
-void signal_handler(int signal)
+extern "C" void signal_handler(int signal)
 {
-  cerr << "Error: Floating point exception detected. Signal " << signal << endl;
+  // NOLINTNEXTLINE(bugprone-signal-handler)
+  fprintf(stderr, "Error: Floating point exception detected. Signal %d\n", signal);
   // This should possibly throw an exception rather than abort, abort should
   // at least give access to the stack when it fails here.
   abort();