diff --git a/Code/Mantid/Framework/DataHandling/src/SaveSPE.cpp b/Code/Mantid/Framework/DataHandling/src/SaveSPE.cpp index 25dd7c0b6e3cd1c87bf960bb7d3e0ef5b17701fe..4e8c99bb80907b5bc3c3dc55406f33eeded861ce 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;