Include cinttypes instead of inttypes.h (#6548)
authorAndres Noetzli <andres.noetzli@gmail.com>
Mon, 17 May 2021 16:52:55 +0000 (09:52 -0700)
committerGitHub <noreply@github.com>
Mon, 17 May 2021 16:52:55 +0000 (16:52 +0000)
This commit changes the includes used by MiniSat. This commit changes
the includes from stdint.h/inttypes.h/limits.h to
cstdint/cinttypes/climits. This ensures that the macros in
cinttypes/inttypes.h, e.g., `PRIi64`, are actually defined. The C99
standard suggested that those macros are only defined for C++ code when
`__STDC_FORMAT_MACROS` is defined. This was never adopted by a C++
standard (https://en.cppreference.com/w/cpp/types/integer). However,
certain versions of mingw-w64 seem to require it with inttypes.h but not
cinttypes.

This fixes the nightly Windows build (tested in the Docker container
used by the nightlies).

src/prop/bvminisat/mtl/IntTypes.h
src/prop/minisat/mtl/IntTypes.h

index 19ca38bea88f7dc0159adc933060c655dee16399..7856dc07c5bb7f849f94cfb6de27ff8dddef886a 100644 (file)
@@ -30,12 +30,20 @@ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWA
 
 #else
 
-#   include <stdint.h>
-#   include <inttypes.h>
+// In contrast to the original MiniSat source code, we are including the
+// cstdint/cinttypes/climits headers instead of stdint.h/inttypes.h/limits.h
+// here. This ensures that the macros in cinttypes/inttypes.h, e.g., PRIi64,
+// are actually defined. The C99 standard suggested that those macros are only
+// defined for C++ code when __STDC_FORMAT_MACROS is defined. This was never
+// adopted by a C++ standard (https://en.cppreference.com/w/cpp/types/integer).
+// However, certain versions of mingw-w64 seem to require it with inttypes.h
+// but not cinttypes.
+#   include <cstdint>
+#   include <cinttypes>
 
 #endif
 
-#include <limits.h>
+#include <climits>
 
 //=================================================================================================
 
index c4881628497ee905eb9faa781989b91c82d1c4e7..f1fc8416352dd9b9566961392ff6806512736a1b 100644 (file)
@@ -30,12 +30,20 @@ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWA
 
 #else
 
-#   include <stdint.h>
-#   include <inttypes.h>
+// In contrast to the original MiniSat source code, we are including the
+// cstdint/cinttypes/climits headers instead of stdint.h/inttypes.h/limits.h
+// here. This ensures that the macros in cinttypes/inttypes.h such as PRIi64
+// are actually defined. The C99 standard suggested that those macros are only
+// defined for C++ code when __STDC_FORMAT_MACROS is defined. This was never
+// adopted by a C++ standard (https://en.cppreference.com/w/cpp/types/integer).
+// However, certain versions of mingw-w64 seem to require it with inttypes.h
+// but not cinttypes.
+#   include <cstdint>
+#   include <cinttypes>
 
 #endif
 
-#include <limits.h>
+#include <climits>
 
 //=================================================================================================