Fixed 'undef' warning with gcc and clang #2131
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix for this warning:
With clang, it is possible to use a pragma diagnostics before
#include <srt/srt.h>
to mute the warning.With gcc, however, the situation is critical. Although the same pragma exists, it does nothing due to a known gcc bug since 2012, never fixed. Apparently, the bug appears too early in the lex analysis phase and #pragma are not yet parsed. It seems a bit difficult to solve and nobody wanted to fix it in 9 years.
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431
The problem is important in applications with a strict "no warning policy" (
-Wall -Wextra -Werror
). If a warning is impossible to mute, the compilation fails.Note: please note that
#if __APPLE__
was replaced with#if defined(__APPLE__) && __APPLE__
. Please keep it like this and do not use#ifdef __APPLE__
. Because of the gcc bug, in order to compile the application, I have found no other solution than this:So, if you use
#ifdef __APPLE__
, it won't work as expected.