From 443dc429e7206cc06e7e6a474ab1e8c5a41ed197 Mon Sep 17 00:00:00 2001 From: nhmall Date: Mon, 29 Aug 2022 14:06:12 -0400 Subject: [PATCH] warning-free build without -Wno-missing-field-initializers Also removes a GCC_WARN usage and the need for #pragma GCC diagnostic ignored "-Wmissing-braces" for src/decl.c when using gcc. --- src/decl.c | 189 ++++++++++++++-------------- src/sp_lev.c | 15 ++- sys/unix/hints/include/compiler.370 | 4 +- win/Qt/qt_main.cpp | 26 ++-- 4 files changed, 125 insertions(+), 109 deletions(-) diff --git a/src/decl.c b/src/decl.c index 721fda639..b19930ced 100644 --- a/src/decl.c +++ b/src/decl.c @@ -140,10 +140,6 @@ const char *ARGV0; #define IVMAGIC 0xdeadbeef -#ifdef GCC_WARN -#pragma GCC diagnostic ignored "-Wmissing-braces" -#endif - const struct Role urole_init_data = { { "Undefined", 0 }, { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, @@ -206,38 +202,45 @@ const struct instance_globals g_init = { /* botl.c */ 0, /* mrank_sz */ - UNDEFINED_VALUES, /* blstats */ + { { { NULL, NULL, 0L, FALSE, FALSE, 0, 0U, { 0 }, NULL, 0, 0, 0 +#ifdef STATUS_HILITES + , UNDEFINED_PTR, UNDEFINED_PTR +#endif + } } + }, /* blstats */ FALSE, /* blinit */ FALSE, /* update_all */ - UNDEFINED_VALUES, /* valset */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* valset */ #ifdef STATUS_HILITES - 0, /* bl_hilite_moves */ + 0L, /* bl_hilite_moves */ #endif - UNDEFINED_VALUES, /* cond_hilites */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 }, /* cond_hilites */ 0, /* now_or_before_idx */ 0, /* condmenu_sortorder */ /* cmd.c */ UNDEFINED_VALUES, /* Cmd */ - UNDEFINED_VALUES, /* clicklook_cc */ + { 0, 0 }, /* clicklook_cc */ WIN_ERR, /* en_win */ FALSE, /* en_via_menu */ UNDEFINED_VALUE, /* last_command_count */ - NULL, /* ext_tlist */ + UNDEFINED_VALUE, /* ext_tlist */ /* dbridge.c */ - UNDEFINED_VALUES, /* occupants */ + { { 0 } }, /* occupants */ /* decl.c */ UNDEFINED_PTR, /* occupation */ UNDEFINED_PTR, /* afternmv */ - UNDEFINED_PTR, /* hname */ + NULL, /* hname */ 0, /* hackpid */ UNDEFINED_VALUES, /* chosen_windowtype */ DUMMY, /* bases */ 0, /* multi */ UNDEFINED_VALUES, /* command_line */ - 0, /* command_count */ + 0L, /* command_count */ NULL, /* multi_reason */ /* multi_reason usually points to a string literal (when not Null) but multireasonbuf[] is available for when it needs to be dynamic */ @@ -251,7 +254,7 @@ const struct instance_globals g_init = { (ROWNO - 1) & ~1, /* y_maze_max */ UNDEFINED_VALUE, /* otg_temp */ 0, /* in_doagain */ - NULL, /* stairs */ + UNDEFINED_PTR, /* stairs */ DUMMY, /* smeq */ 0, /* doorindex */ 0, /* done_money */ @@ -273,44 +276,44 @@ const struct instance_globals g_init = { UNDEFINED_VALUES, /* dungeons */ { 0, 0, 0, 0, 0, 0, 0, 0 }, /* updest */ { 0, 0, 0, 0, 0, 0, 0, 0 }, /* dndest */ - { 0, 0} , /* inv_pos */ + { 0, 0 } , /* inv_pos */ FALSE, /* defer_see_monsters */ FALSE, /* in_mklev */ FALSE, /* stoned */ FALSE, /* unweapon */ FALSE, /* mrg_to_wielded */ - NULL, /* plinemsg_types */ + UNDEFINED_PTR, /* plinemsg_types */ UNDEFINED_VALUES, /* toplines */ - DUMMY, /* bhitpos */ + { 0, 0 }, /* bhitpos */ FALSE, /* in_steed_dismounting */ - DUMMY, /* doors */ - NULL, /* menu_colorings */ - DUMMY, /* lastseentyp */ + { { 0, 0 } }, /* doors */ + UNDEFINED_PTR, /* menu_colorings */ + { { 0 } }, /* lastseentyp */ DUMMY, /* spl_book */ UNDEFINED_VALUES, /* level_info */ - NULL, /* ftrap */ - NULL, /* current_wand */ - NULL, /* thrownobj */ - NULL, /* kickedobj */ + UNDEFINED_PTR, /* ftrap */ + UNDEFINED_PTR, /* current_wand */ + UNDEFINED_PTR, /* thrownobj */ + UNDEFINED_PTR, /* kickedobj */ DUMMY, /* dungeon_topology */ DUMMY, /* killer */ DUMMY, /* rooms */ - NULL, /* subrooms */ + UNDEFINED_PTR, /* subrooms */ UNDEFINED_VALUES, /* level */ 1L, /* moves; misnamed turn counter */ 1L << 3, /* hero_seq: sequence number for hero movement, 'moves*8 + n' * where n is usually 1, sometimes 2 when Fast/Very_fast, maybe * higher if polymorphed into something that's even faster */ 0L, /* wailmsg */ - NULL, /* migrating_objs */ - NULL, /* billobjs */ + UNDEFINED_PTR, /* migrating_objs */ + UNDEFINED_PTR, /* billobjs */ #if defined(MICRO) || defined(WIN32) UNDEFINED_VALUES, /* hackdir */ #endif /* MICRO || WIN32 */ DUMMY, /* youmonst */ - NULL, /* invent */ + UNDEFINED_PTR, /* invent */ DUMMY, /* context */ - DUMMY, /* fqn_prefix */ + { NULL }, /* fqn_prefix */ DUMMY, /* tc_gbl_data */ #if defined(UNIX) || defined(VMS) 0, /* locknum */ @@ -330,7 +333,7 @@ const struct instance_globals g_init = { UNDEFINED_VALUE, /* did_dig_msg */ /* display.c */ - UNDEFINED_VALUES, /* gbuf */ + { { 0 } }, /* gbuf */ UNDEFINED_VALUES, /* gbuf_start */ UNDEFINED_VALUES, /* gbug_stop */ @@ -342,7 +345,7 @@ const struct instance_globals g_init = { { 0, 0 }, /* save_dlevel */ /* do_name.c */ - NULL, /* gloc_filter_map */ + UNDEFINED_PTR, /* gloc_filter_map */ UNDEFINED_VALUE, /* gloc_filter_floodfill_match_glyph */ /* do_wear.c */ @@ -351,26 +354,26 @@ const struct instance_globals g_init = { /* dog.c */ 0, /* petname_used */ UNDEFINED_VALUE, /* gtyp */ - UNDEFINED_VALUE, /* gx */ - UNDEFINED_VALUE, /* gy */ + 0, /* gx */ + 0, /* gy */ DUMMY, /* dogname */ DUMMY, /* catname */ DUMMY, /* horsename */ UNDEFINED_VALUE, /* preferred_pet */ - NULL, /* mydogs */ - NULL, /* migrating_mons */ - NULL, /* apelist */ + UNDEFINED_PTR, /* mydogs */ + UNDEFINED_PTR, /* migrating_mons */ + UNDEFINED_PTR, /* apelist */ UNDEFINED_VALUES, /* mvitals */ /* dokick.c */ UNDEFINED_PTR, /* maploc */ UNDEFINED_VALUES, /* nowhere */ - UNDEFINED_PTR, /* gate_str */ + NULL, /* gate_str */ /* symbols.c */ DUMMY, /* symset */ #ifdef ENHANCED_SYMBOLS - DUMMY, /* symset_customizations */ + { { 0 } }, /* symset_customizations */ #endif 0, /* currentgraphics */ DUMMY, /* showsyms */ @@ -382,21 +385,21 @@ const struct instance_globals g_init = { /* dungeon.c */ 0, /* n_dgns */ - NULL, /* branches */ - NULL, /* mapseenchn */ + UNDEFINED_PTR, /* branches */ + UNDEFINED_PTR, /* mapseenchn */ /* eat.c */ FALSE, /* force_save_hs */ NULL, /* eatmbuf */ /* end.c */ - UNDEFINED_VALUES, - UNDEFINED_VALUES, - UNDEFINED_VALUES, - VANQ_MLVL_MNDX, + UNDEFINED_VALUES, /* gems */ + UNDEFINED_VALUES, /* amulets */ + UNDEFINED_VALUES, /* valuables */ + VANQ_MLVL_MNDX, /* vanq_sortmode */ /* extralev.c */ - UNDEFINED_VALUES, + UNDEFINED_VALUES, /* r */ /* files.c */ NULL, /* cmdline_rcfile */ @@ -421,13 +424,13 @@ const struct instance_globals g_init = { /* hack.c */ UNDEFINED_VALUES, /* tmp_anything */ UNDEFINED_VALUE, /* wc */ - NULL, /* travelmap */ + UNDEFINED_PTR, /* travelmap */ /* invent.c */ 51, /* lastinvr */ 0, /* sortloogmode */ NULL, /* invbuf */ - 0, /* inbufsize */ + 0U, /* invbufsize */ WIN_ERR, /* cached_pickinv_win */ 0, /* core_invent_state */ 0, /* in_sync_perminvent */ @@ -438,7 +441,7 @@ const struct instance_globals g_init = { UNDEFINED_VALUES, /* only (coord) */ /* light.c */ - NULL, /* light_source */ + UNDEFINED_PTR, /* light_base */ /* lock.c */ UNDEFINED_VALUES, @@ -455,10 +458,10 @@ const struct instance_globals g_init = { UNDEFINED_VALUE, /* mhitu_dieroll */ /* mklev.c */ - UNDEFINED_VALUES, /* luathemes[] */ + { UNDEFINED_PTR }, /* luathemes[] */ UNDEFINED_VALUE, /* vault_x */ UNDEFINED_VALUE, /* vault_y */ - UNDEFINED_VALUE, /* made_branch */ + FALSE, /* made_branch */ /* mkmap.c */ UNDEFINED_PTR, /* new_locations */ @@ -477,7 +480,7 @@ const struct instance_globals g_init = { UNDEFINED_VALUE, /* ymin */ UNDEFINED_VALUE, /* xmax */ UNDEFINED_VALUE, /* ymax */ - 0, /* ransacked */ + FALSE, /* ransacked */ /* mkobj.c */ FALSE, /* mkcorpstat_norevive */ @@ -486,14 +489,14 @@ const struct instance_globals g_init = { FALSE, /* vamp_rise_msg */ FALSE, /* disintegested */ FALSE, /* zombify */ - NULL, /* animal_list */ + UNDEFINED_PTR, /* animal_list */ UNDEFINED_VALUE, /* animal_list_count */ FALSE, /* somebody_can_move */ /* mthrowu.c */ UNDEFINED_VALUE, /* mesg_given */ - NULL, /* mtarget */ - NULL, /* marcher */ + UNDEFINED_PTR, /* mtarget */ + UNDEFINED_PTR, /* marcher */ /* muse.c */ FALSE, /* m_using */ @@ -537,24 +540,24 @@ const struct instance_globals g_init = { 0, /* oldcap */ (struct obj *) 0, /* current_container */ UNDEFINED_VALUE, /* abort_looting */ - UNDEFINED_VALUE, /* val_for_n_or_more */ + 0L, /* val_for_n_or_more */ UNDEFINED_VALUES, /* valid_menu_classes */ - UNDEFINED_VALUE, /* class_filter */ - UNDEFINED_VALUE, /* bucx_filter */ - UNDEFINED_VALUE, /* shop_filter */ - UNDEFINED_VALUE, /* picked_filter */ - UNDEFINED_VALUE, /* loot_reset_justpicked */ + FALSE, /* class_filter */ + FALSE, /* bucx_filter */ + FALSE, /* shop_filter */ + FALSE, /* picked_filter */ + FALSE, /* loot_reset_justpicked */ /* pline.c */ - 0, /* pline_flags */ + 0U, /* pline_flags */ UNDEFINED_VALUES, /* prevmsg */ #ifdef DUMPLOG - 0, /* saved_pline_index */ - UNDEFINED_VALUES, + 0U, /* saved_pline_index */ + { NULL }, #endif - (char *) 0, /* you_buf */ + NULL, /* you_buf */ 0, /* you_buf_siz */ - NULL, /* gamelog */ + UNDEFINED_PTR, /* gamelog */ /* polyself.c */ 0, /* sex_change_ok */ @@ -580,7 +583,7 @@ const struct instance_globals g_init = { UNDEFINED_VALUE, /* known */ /* region.c */ - NULL, /* regions */ + UNDEFINED_PTR, /* regions */ 0, /* n_regions */ 0, /* max_regions */ FALSE, /* gas_cloud_diss_within */ @@ -588,9 +591,9 @@ const struct instance_globals g_init = { /* restore.c */ 0, /* n_ids_mapped */ - 0, /* id_map */ + UNDEFINED_PTR, /* id_map */ UNDEFINED_PTR, /* oldfruit */ - UNDEFINED_VALUE, /* omoves */ + 0L, /* omoves */ /* rip.c */ UNDEFINED_PTR, /* rip */ @@ -603,20 +606,20 @@ const struct instance_globals g_init = { UNDEFINED_VALUES, /* rfilter */ /* rumors.c */ - 0, /* true_rumor_size */ - 0, /* false_rumor_size */ - UNDEFINED_VALUE, /* true_rumor_start*/ - UNDEFINED_VALUE, /* false_rumor_start*/ - UNDEFINED_VALUE, /* true_rumor_end */ - UNDEFINED_VALUE, /* false_rumor_end */ + 0L, /* true_rumor_size */ + 0L, /* false_rumor_size */ + 0UL, /* true_rumor_start*/ + 0UL, /* false_rumor_start*/ + 0L, /* true_rumor_end */ + 0L, /* false_rumor_end */ 0, /* oracle_flag */ - 0, /* oracle_cnt */ - NULL, /* oracle_loc */ + 0U, /* oracle_cnt */ + UNDEFINED_PTR, /* oracle_loc */ /* save.c */ TRUE, /* havestate*/ - 0, /* ustuck_id */ - 0, /* usteed_id */ + 0U, /* ustuck_id */ + 0U, /* usteed_id */ (struct obj *) 0, /* looseball */ (struct obj *) 0, /* loosechain */ { 0, 0 }, /* uz_save */ @@ -626,13 +629,13 @@ const struct instance_globals g_init = { SELL_NORMAL, /* sell_how */ FALSE, /* auto_credit */ UNDEFINED_VALUES, /* repo */ - UNDEFINED_VALUE, /* followmsg */ + 0L, /* followmsg */ /* sp_lev.c */ NULL, /* lev_message */ - NULL, /* lregions */ + UNDEFINED_PTR, /* lregions */ 0, /* num_lregions */ - NULL, /* coder */ + UNDEFINED_PTR, /* coder */ UNDEFINED_VALUE, /* xstart */ UNDEFINED_VALUE, /* ystart */ UNDEFINED_VALUE, /* xsize */ @@ -642,24 +645,24 @@ const struct instance_globals g_init = { /* spells.c */ 0, /* spl_sortmode */ - NULL, /* spl_orderindx */ + UNDEFINED_PTR, /* spl_orderindx */ /* steal.c */ - 0, /* stealoid */ - 0, /* stealmid */ + 0U, /* stealoid */ + 0U, /* stealmid */ /* teleport.c */ /* timeout.c */ UNDEFINED_PTR, /* timer_base */ - 1, /* timer_id */ + 1UL, /* timer_id */ /* topten.c */ WIN_ERR, /* toptenwin */ /* trap.c */ - { 0, 0, FALSE }, - UNDEFINED_VALUES, + { 0, 0, FALSE }, /* acid_ctx */ + { UNDEFINED_PTR, 0, 0 }, /* launchplace */ /* u_init.c */ STRANGE_OBJECT, /* nocreate */ @@ -668,12 +671,12 @@ const struct instance_globals g_init = { STRANGE_OBJECT, /* nocreate4 */ /* uhitm.c */ - UNDEFINED_VALUE, /* override_confirmation */ + FALSE, /* override_confirmation */ /* vision.c */ - NULL, /* viz_array */ - NULL, /* viz_rmin */ - NULL, /* viz_rmax */ + UNDEFINED_PTR, /* viz_array */ + UNDEFINED_PTR, /* viz_rmin */ + UNDEFINED_PTR, /* viz_rmax */ FALSE, /* vision_full_recalc */ 0, /* seethru */ @@ -681,11 +684,11 @@ const struct instance_globals g_init = { UNDEFINED_PTR, /* propellor */ /* windows.c */ - NULL, /* last_winchoice */ + UNDEFINED_PTR, /* last_winchoice */ /* zap.c */ UNDEFINED_VALUE, /* poly_zap */ - UNDEFINED_VALUE, /* obj_zapped */ + FALSE, /* obj_zapped */ /* new */ DUMMY, /* lua_ver[LUA_VER_BUFSIZ] */ diff --git a/src/sp_lev.c b/src/sp_lev.c index cdf04ec36..dfa3feaae 100644 --- a/src/sp_lev.c +++ b/src/sp_lev.c @@ -3429,7 +3429,20 @@ get_table_objtype(lua_State *L) int lspo_object(lua_State *L) { - static object zeroobject = { DUMMY }; + static object zeroobject = { + { 0 }, /* Str_or_len name */ + 0, /* corpsenm */ + 0, 0, /* id, spe */ + 0, /* coord */ + 0, 0, /* coordxy x,y */ + 0, 0, /* class, containment */ + 0, /* curse_state */ + 0, /* quan */ + 0, /* buried */ + 0, /* lit */ + 0, 0, 0, 0, 0, 0, 0, 0, /* eroded, locked, trapped, recharged, + invis, greased, broken, achievment */ + }; #if 0 int nparams = 0; #endif diff --git a/sys/unix/hints/include/compiler.370 b/sys/unix/hints/include/compiler.370 index 73af1e7bd..a092e9776 100755 --- a/sys/unix/hints/include/compiler.370 +++ b/sys/unix/hints/include/compiler.370 @@ -51,7 +51,7 @@ endif # clang #CXX=clang++ -std=gnu++11 CFLAGS=$(CCFLAGS) -I../include -DNOTPARMDECL -CFLAGS+=-Wall -Wextra -Wno-missing-field-initializers \ +CFLAGS+=-Wall -Wextra \ -Wreturn-type -Wunused -Wformat -Wswitch -Wshadow -Wwrite-strings CFLAGS+=-pedantic CFLAGS+=-Wmissing-declarations @@ -67,7 +67,7 @@ CFLAGS+=-Wold-style-definition CFLAGS+=-Wstrict-prototypes CCXXFLAGS = -g -I../include -DNOTPARMDECL -CCXXFLAGS+=-Wall -Wextra -Wno-missing-field-initializers \ +CCXXFLAGS+=-Wall -Wextra \ -Wreturn-type -Wunused -Wformat -Wswitch -Wshadow -Wwrite-strings CCXXFLAGS+=-pedantic CCXXFLAGS+=-Wmissing-declarations diff --git a/win/Qt/qt_main.cpp b/win/Qt/qt_main.cpp index bfacd2635..967ec7e01 100644 --- a/win/Qt/qt_main.cpp +++ b/win/Qt/qt_main.cpp @@ -585,9 +585,9 @@ NetHackQtMainWindow::NetHackQtMainWindow(NetHackQtKeyBuffer& ks) : int flags; // 1 desktop, 2 handheld, 3 either/both int (*funct)(void); } item[] = { - { game, 0, 3}, + { game, 0, 3, (int (*)(void)) 0}, { game, "Extended-commands", 3, doextcmd }, - { game, 0, 3}, + { game, 0, 3, (int (*)(void)) 0}, { game, "Version", 3, doversion}, { game, "Compilation", 3, doextversion}, { game, "History", 3, dohistory}, @@ -602,7 +602,7 @@ NetHackQtMainWindow::NetHackQtMainWindow(NetHackQtKeyBuffer& ks) : #endif "Options", 3, doset}, { game, "Explore mode", 3, enter_explore_mode}, - { game, 0, 3}, + { game, 0, 3, (int (*)(void)) 0}, { game, "Save-and-exit", 3, dosave}, { game, #ifdef MACOS @@ -615,15 +615,15 @@ NetHackQtMainWindow::NetHackQtMainWindow(NetHackQtKeyBuffer& ks) : { apparel, "Apparel off", 2, doddoremarm}, { apparel, "Remove many", 1, doddoremarm}, - { apparel, 0, 3}, + { apparel, 0, 3, (int (*)(void)) 0}, { apparel, "Wield weapon", 3, dowield}, { apparel, "Exchange weapons", 3, doswapweapon}, { apparel, "Two weapon combat", 3, dotwoweapon}, { apparel, "Load quiver", 3, dowieldquiver}, - { apparel, 0, 3}, + { apparel, 0, 3, (int (*)(void)) 0}, { apparel, "Wear armor", 3, dowear}, { apparel, "Take off armor", 3, dotakeoff}, - { apparel, 0, 3}, + { apparel, 0, 3, (int (*)(void)) 0}, { apparel, "Put on accessories", 3, doputon}, { apparel, "Remove accessories", 3, doremring}, @@ -663,20 +663,20 @@ NetHackQtMainWindow::NetHackQtMainWindow(NetHackQtKeyBuffer& ks) : { magic, "Dip", 3, dodip}, { magic, "Rub", 3, dorub}, { magic, "Invoke", 3, doinvoke}, - { magic, 0, 3}, + { magic, 0, 3, (int (*)(void)) 0}, { magic, "Offer", 3, dosacrifice}, { magic, "Pray", 3, dopray}, - { magic, 0, 3}, + { magic, 0, 3, (int (*)(void)) 0}, { magic, "Teleport", 3, dotelecmd}, { magic, "Monster action", 3, domonability}, { magic, "Turn undead", 3, doturn}, { help, "Help", 3, dohelp}, - { help, 0, 3}, + { help, 0, 3, (int (*)(void)) 0}, { help, "What is here", 3, dolook}, { help, "What is there", 3, doquickwhatis}, { help, "What is...", 2, dowhatis}, - { help, 0, 1}, + { help, 0, 1, (int (*)(void)) 0}, { info, "Inventory", 3, ddoinv}, { info, "Attributes (extended status)", 3, doattributes }, @@ -685,13 +685,13 @@ NetHackQtMainWindow::NetHackQtMainWindow(NetHackQtKeyBuffer& ks) : { info, "Discoveries", 3, dodiscovered}, { info, "List/reorder spells", 3, dovspell}, { info, "Adjust inventory letters", 3, doorganize }, - { info, 0, 3}, + { info, 0, 3, (int (*)(void)) 0}, { info, "Name object or creature", 3, docallcmd}, { info, "Annotate level", 3, donamelevel }, - { info, 0, 3}, + { info, 0, 3, (int (*)(void)) 0}, { info, "Skills", 3, enhance_weapon_skill}, - { 0, 0, 0 } + { 0, 0, 0, (int (*)(void)) 0 } }; QAction *actn;