From 00badb07aa993cc253f8be14e8ed5c38a7b5a389 Mon Sep 17 00:00:00 2001 From: Steven Hahn <hahnse@ornl.gov> Date: Thu, 19 Mar 2015 14:18:02 -0400 Subject: [PATCH] Refs #11400. Use variatic template in place of variatic macro. --- .../Framework/DataHandling/src/SaveSPE.cpp | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/Code/Mantid/Framework/DataHandling/src/SaveSPE.cpp b/Code/Mantid/Framework/DataHandling/src/SaveSPE.cpp index 25dd7c0b6e3..4e8c99bb809 100644 --- a/Code/Mantid/Framework/DataHandling/src/SaveSPE.cpp +++ b/Code/Mantid/Framework/DataHandling/src/SaveSPE.cpp @@ -25,21 +25,22 @@ DECLARE_ALGORITHM(SaveSPE) * @throws std::runtime_error :: throws when there is a problem writing to disk, * usually disk space or permissions based */ - -#if __clang__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments" -#endif - -#define FPRINTF_WITH_EXCEPTION(stream, format, ...) \ - if (fprintf(stream, format, ##__VA_ARGS__) <= 0) { \ - throw std::runtime_error( \ - "Error writing to file. Check folder permissions and disk space."); \ + +namespace { + +template <typename... vargs> +void FPRINTF_WITH_EXCEPTION(FILE *stream, const char *format, vargs... args) { + if (fprintf(stream, format, args...) <= 0) { + throw std::runtime_error( + "Error writing to file. Check folder permissions and disk space."); } - -#if __clang__ -#pragma clang diagnostic pop -#endif +} + +// special case needed for case with only two arguments. +void FPRINTF_WITH_EXCEPTION(FILE *stream, const char *format) { + FPRINTF_WITH_EXCEPTION(stream, format, ""); +} +} using namespace Kernel; using namespace API; -- GitLab