When compiling QuickFIX with compiler warnings enabled (-Wextra / -Wall), GCC/Clang emit a -Wmissing-field-initializers warning in src/C++/FieldTypes.h inside FIX::DateTime::getTmUtc().
The variable result is initialized using tm result = {0};, which triggers compiler warnings for missing initializers for struct tm fields (tm_min, tm_hour, tm_gmtoff, tm_zone, etc.).
Steps to Reproduce
- Configure QuickFIX with
-DCMAKE_CXX_FLAGS="-Wall -Wextra":
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-Wall -Wextra"
- Build the project:
Expected Behavior
The codebase should compile cleanly without -Wmissing-field-initializers warnings on standard C++ compilers.
Actual Behavior
The compiler outputs the following warnings:
src/C++/FieldTypes.h:231:19: warning: missing initializer for member ‘tm::tm_min’ [-Wmissing-field-initializers]
src/C++/FieldTypes.h:231:19: warning: missing initializer for member ‘tm::tm_hour’ [-Wmissing-field-initializers]
src/C++/FieldTypes.h:231:19: warning: missing initializer for member ‘tm::tm_gmtoff’ [-Wmissing-field-initializers]
src/C++/FieldTypes.h:231:19: warning: missing initializer for member ‘tm::tm_zone’ [-Wmissing-field-initializers]
Location
- File:
src/C++/FieldTypes.h
- Function:
FIX::DateTime::getTmUtc()
- Line 231:
tm result = {0};
Proposed Fix
Change tm result = {0}; to tm result = {}; (or tm result{};), which value-initializes all fields of struct tm without triggering -Wmissing-field-initializers.
Environment
- QuickFIX version: latest
master
- OS: Linux (Ubuntu x86_64)
- Compiler: GCC 11 / Clang (with C++17)
When compiling QuickFIX with compiler warnings enabled (
-Wextra/-Wall), GCC/Clang emit a-Wmissing-field-initializerswarning insrc/C++/FieldTypes.hinsideFIX::DateTime::getTmUtc().The variable
resultis initialized usingtm result = {0};, which triggers compiler warnings for missing initializers forstruct tmfields (tm_min,tm_hour,tm_gmtoff,tm_zone, etc.).Steps to Reproduce
-DCMAKE_CXX_FLAGS="-Wall -Wextra":Expected Behavior
The codebase should compile cleanly without
-Wmissing-field-initializerswarnings on standard C++ compilers.Actual Behavior
The compiler outputs the following warnings:
Location
src/C++/FieldTypes.hFIX::DateTime::getTmUtc()tm result = {0};Proposed Fix
Change
tm result = {0};totm result = {};(ortm result{};), which value-initializes all fields ofstruct tmwithout triggering-Wmissing-field-initializers.Environment
master