]> granicus.if.org Git - icu/commitdiff
ICU-20819 Correct placement of parentheses in preprocessor macro.
authorFredrik Roubert <roubert@google.com>
Wed, 18 Sep 2019 18:26:03 +0000 (20:26 +0200)
committerSteven R. Loomis <srl295@gmail.com>
Wed, 25 Sep 2019 15:06:29 +0000 (08:06 -0700)
The purpose of the FIELD_NAME_STR() macro is to create a string literal
by using the # preprocessing operator and then skip the first 5 chars of
this string by using the +5 pointer arithmetic. This is all intentional,
but if the parentheses are misplaced the compiler might think that this
is a mistake, a failed string concatenation (-Wstring-plus-int).

icu4c/source/test/intltest/caltest.cpp

index 677c98a12196ad1548824e03c759cab644c25227..82e34f20f5efb8e590988b723e077cf0d8100e67 100644 (file)
@@ -354,7 +354,7 @@ void CalendarTest::runIndexedTest( int32_t index, UBool exec, const char* &name,
 
 UnicodeString CalendarTest::fieldName(UCalendarDateFields f) {
     switch (f) {
-#define FIELD_NAME_STR(x) case x: return (#x+5)
+#define FIELD_NAME_STR(x) case x: return (#x)+5
       FIELD_NAME_STR( UCAL_ERA );
       FIELD_NAME_STR( UCAL_YEAR );
       FIELD_NAME_STR( UCAL_MONTH );