Adjust foreach macros to not trigger VS warning C4706 #667
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.
It seems like the json_*_foreach() macros intentionally use an assignment in a conditional check (of a for loop). Explicitly request the assignment and then non-zero check by wrapping the assignment in parenthesis and then test the result using
!= 0
. To my understanding, this should do the same check, but in a way that hints to MSVC that you in fact really did mean to assign and then test for nonzeroness inside the for loop conditional.As I do not understand the operation of these macros, I would request a thorough check that I did not affect their functionality.