Fix various Win32 build failures due to ambiguous operator[]()

gcc reports:

```
ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second
```

Fix the ambiguity by using an unsigned integer constant.
This commit is contained in:
Kp 2022-10-23 23:00:24 +00:00
parent 8501db1e64
commit 7fc6879555
9 changed files with 19 additions and 17 deletions

View File

@ -813,7 +813,7 @@ static void say_escort_goal(const escort_goal_t goal_num)
case ESCORT_GOAL_MARKER9:
{
const uint8_t zero_based_goal_num = goal_num - ESCORT_GOAL_MARKER1;
buddy_message("Finding marker %i: '%.24s'", zero_based_goal_num + 1, &MarkerState.message[game_marker_index{zero_based_goal_num}][0]);
buddy_message("Finding marker %i: '%.24s'", zero_based_goal_num + 1, &MarkerState.message[(game_marker_index{zero_based_goal_num})][0u]);
}
return;
}

View File

@ -540,7 +540,7 @@ void DropBuddyMarker(object &objp)
static_assert(MarkerState.message.valid_index(marker_num), "not enough markers");
auto &MarkerMessage = MarkerState.message[marker_num];
snprintf(&MarkerMessage[0], MarkerMessage.size(), "RIP: %s", static_cast<const char *>(PlayerCfg.GuidebotName));
snprintf(&MarkerMessage[0u], MarkerMessage.size(), "RIP: %s", static_cast<const char *>(PlayerCfg.GuidebotName));
auto &marker_objidx = MarkerState.imobjidx[marker_num];
if (marker_objidx != object_none)
@ -952,7 +952,8 @@ static void draw_automap(fvcobjptr &vcobjptr, automap &am)
if (MarkerState.message.valid_index(HighlightMarker))
{
auto &m = MarkerState.message[HighlightMarker];
gr_printf(canvas, *canvas.cv_font, (SWIDTH/64), (SHEIGHT/18), "Marker %u%c %s", static_cast<unsigned>(HighlightMarker) + 1, m[0] ? ':' : 0, &m[0]);
auto &p = m[0u];
gr_printf(canvas, *canvas.cv_font, (SWIDTH / 64), (SHEIGHT / 18), "Marker %u%c %s", static_cast<unsigned>(HighlightMarker) + 1, p ? ':' : 0, &p);
}
}
#endif
@ -1733,7 +1734,7 @@ void InitMarkerInput ()
//got a free slot. start inputting marker message
Marker_input[0]=0;
Marker_input.front() = 0;
Marker_index=0;
key_toggle_repeat(1);
}

View File

@ -1203,16 +1203,17 @@ static void collide_player_and_marker(const d_robot_info_array &, const object_b
const auto marker_id = get_marker_id(marker);
auto &msg = MarkerState.message[marker_id];
auto &p = msg[0u];
if (Game_mode & GM_MULTI)
{
const auto marker_owner = get_marker_owner(Game_mode, marker_id, Netgame.max_numplayers);
drawn = HUD_init_message(HM_DEFAULT|HM_MAYDUPL, "MARKER %s: %s", static_cast<const char *>(vcplayerptr(marker_owner)->callsign), &msg[0]);
drawn = HUD_init_message(HM_DEFAULT|HM_MAYDUPL, "MARKER %s: %s", vcplayerptr(marker_owner)->callsign.operator const char *(), &p);
}
else
{
const auto displayed_marker_id = static_cast<unsigned>(marker_id) + 1;
if (msg[0])
drawn = HUD_init_message(HM_DEFAULT|HM_MAYDUPL, "MARKER %d: %s", displayed_marker_id, &msg[0]);
if (p)
drawn = HUD_init_message(HM_DEFAULT|HM_MAYDUPL, "MARKER %d: %s", displayed_marker_id, &p);
else
drawn = HUD_init_message(HM_DEFAULT|HM_MAYDUPL, "MARKER %d", displayed_marker_id);
}

View File

@ -83,7 +83,7 @@ static void game_draw_marker_message(grs_canvas &canvas)
{
gr_set_fontcolor(canvas, BM_XRGB(0, 63, 0),-1);
auto &game_font = *GAME_FONT;
gr_printf(canvas, game_font, 0x8000, (LINE_SPACING(game_font, game_font) * 5) + FSPACY(1), "Marker: %s%c", &Marker_input[0], Marker_input[Marker_input.size() - 2] ? 0 : '_');
gr_printf(canvas, game_font, 0x8000, (LINE_SPACING(game_font, game_font) * 5) + FSPACY(1), "Marker: %s%c", &Marker_input[0u], Marker_input[Marker_input.size() - 2] ? 0 : '_');
}
}
#endif

View File

@ -106,7 +106,7 @@ void HUD_render_message_frame(grs_canvas &canvas)
if (strlen(i->message) > 38)
HUD_toolong = 1;
for (; i != e; ++i ) {
gr_string(canvas, game_font, 0x8000, y, &i->message[0]);
gr_string(canvas, game_font, 0x8000, y, &i->message[0u]);
y += line_spacing;
}
}

View File

@ -1236,7 +1236,7 @@ void multi_send_macro(const int fkey)
return;
}
if (!PlayerCfg.NetworkMessageMacro[key][0])
if (!PlayerCfg.NetworkMessageMacro[key][0u])
{
HUD_init_message_literal(HM_MULTI, TXT_NO_MACRO);
return;
@ -1293,7 +1293,7 @@ static void multi_send_message_end(const d_robot_info_array &Robot_info, fvmobjp
constexpr auto maximum_allowed_shields = 100ul;
auto &plr = get_local_player();
const char *const callsign = plr.callsign;
const auto requested_handicap = strtoul(&Network_message[11], 0, 10);
const auto requested_handicap = strtoul(&Network_message[11u], 0, 10);
const auto clamped_handicap_max = std::max(minimum_allowed_shields, requested_handicap);
const auto clamped_handicap_min = std::min(maximum_allowed_shields, clamped_handicap_max);
StartingShields = i2f(clamped_handicap_min);

View File

@ -2906,7 +2906,7 @@ static std::span<const uint8_t> net_udp_prepare_heavy_game_info(const d_level_un
auto addr = entry_addr;
for (const auto &&[i, np] : enumerate(Netgame.players))
{
memcpy(&buf[len], &np.callsign[0], CALLSIGN_LEN+1); len += CALLSIGN_LEN+1;
memcpy(&buf[len], &np.callsign[0u], CALLSIGN_LEN+1); len += CALLSIGN_LEN+1;
buf[len] = underlying_value(np.connected); len++;
buf[len] = underlying_value(np.rank); len++;
if (addr && *addr == np.protocol.udp.addr)

View File

@ -4029,7 +4029,7 @@ static void newdemo_write_end()
static bool guess_demo_name(ntstring<PATH_MAX - 16> &filename)
{
filename[0] = 0;
filename.front() = 0;
const auto &n = CGameArg.SysRecordDemoNameTemplate;
if (n.empty())
return false;
@ -4106,7 +4106,7 @@ static bool guess_demo_name(ntstring<PATH_MAX - 16> &filename)
if (i >= sizeof(filename) - 1)
return false;
}
return filename[0];
return filename.front();
}
constexpr char demoname_allowed_chars[] = "azAZ09__--";
@ -4150,7 +4150,7 @@ try_again:
if (exit == -2) { // got bumped out from network menu
char save_file[PATH_MAX];
if (filename[0] != '\0') {
if (filename.front() != '\0') {
snprintf(save_file, sizeof(save_file), DEMO_FORMAT_STRING("%s"), filename.data());
} else
snprintf(save_file, sizeof(save_file), DEMO_FORMAT_STRING("tmp%d"), tmpcnt++);
@ -4163,7 +4163,7 @@ try_again:
return; // return without doing anything
}
if (filename[0]==0) //null string
if (!filename.front()) //null string
goto try_again;
//check to make sure name is ok

View File

@ -568,7 +568,7 @@ int songs_play_song( int songnum, int repeat )
case MUSIC_TYPE_CUSTOM:
{
// EXCEPTION: If SONG_ENDLEVEL is undefined, continue playing level song.
if (Song_playing >= SONG_FIRST_LEVEL_SONG && songnum == SONG_ENDLEVEL && !CGameCfg.CMMiscMusic[songnum][0])
if (Song_playing >= SONG_FIRST_LEVEL_SONG && songnum == SONG_ENDLEVEL && !CGameCfg.CMMiscMusic[songnum].front())
return Song_playing;
Song_playing = -1;