User forums > Help
Can`t build C::B IDE from latest svn revision 12240
stahta01:
Building CB myself using MSys2 MinGW64 64 bit and I think squirrel needs patched I am not sure that this patch is correct.
1. It is poorly formatted ( should I use tabs or spaces should I indent the tests or not. )
2. I am testing if __USE_MINGW_ANSI_STDIO is defined; but, maybe I need to test if the value is 1 or not zero.
--- Code: ---diff --git a/src/sdk/scripting/squirrel/sqdebug.cpp b/src/sdk/scripting/squirrel/sqdebug.cpp
index 7f96c4f..df3ef5f 100644
--- a/src/sdk/scripting/squirrel/sqdebug.cpp
+++ b/src/sdk/scripting/squirrel/sqdebug.cpp
@@ -76,7 +76,11 @@ SQString *SQVM::PrintObjVal(const SQObject &o)
case OT_INTEGER:
// C::B patch: Support for Windows 64 bit
#if defined(_WIN64)
- scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)), _SC("%I64d"), _integer(o));
+ #if defined(__USE_MINGW_ANSI_STDIO)
+ scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)), _SC("%lld"), _integer(o));
+ #else
+ scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)), _SC("%I64d"), _integer(o));
+ #endif
// C::B patch: Support for Linux 64 bit
#elif defined(_SQ64)
scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)), _SC("%ld"), _integer(o));
diff --git a/src/sdk/scripting/squirrel/sqfuncstate.cpp b/src/sdk/scripting/squirrel/sqfuncstate.cpp
index f98c757..28e55c7 100644
--- a/src/sdk/scripting/squirrel/sqfuncstate.cpp
+++ b/src/sdk/scripting/squirrel/sqfuncstate.cpp
@@ -82,7 +82,11 @@ void DumpLiteral(SQObjectPtr &o)
case OT_INTEGER:
// C::B patch: Support for Windows 64 bit
#if defined(_WIN64)
- scprintf(_SC("{%I64d}"),_integer(o));
+ #if defined(__USE_MINGW_ANSI_STDIO)
+ scprintf(_SC("{%lld}"),_integer(o));
+ #else
+ scprintf(_SC("{%I64d}"),_integer(o));
+ #endif
// C::B patch: Support for Linux 64 bit
#elif defined(_SQ64)
scprintf(_SC("{%ld}"),_integer(o));
diff --git a/src/sdk/scripting/squirrel/sqvm.cpp b/src/sdk/scripting/squirrel/sqvm.cpp
index b1e91b5..d12f959 100644
--- a/src/sdk/scripting/squirrel/sqvm.cpp
+++ b/src/sdk/scripting/squirrel/sqvm.cpp
@@ -251,7 +251,11 @@ void SQVM::ToString(const SQObjectPtr &o,SQObjectPtr &res)
case OT_INTEGER:
// C::B patch: Support for Windows 64 bit
#if defined(_WIN64)
- scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)),_SC("%I64d"),_integer(o));
+ #if defined(__USE_MINGW_ANSI_STDIO)
+ scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)),_SC("%lld"),_integer(o));
+ #else
+ scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)),_SC("%I64d"),_integer(o));
+ #endif
// C::B patch: Support for Linux 64 bit
#elif defined(_SQ64)
scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)),_SC("%ld"),_integer(o));
--- End code ---
Tim S.
oBFusCATed:
Patching it for what? What is the error you're trying to fix?
I'm pretty sure we're not supposed to use __USE_MINGW_ANSI_STDIO.
stahta01:
--- Quote from: oBFusCATed on January 12, 2021, 12:28:56 am ---Patching it for what? What is the error you're trying to fix?
I'm pretty sure we're not supposed to use __USE_MINGW_ANSI_STDIO.
--- End quote ---
Building using the MSys2 MinGW64 64 bit GCC; it does not support "I64d" printf option.
Edit: And the compiler defines "__USE_MINGW_ANSI_STDIO" to 1 to show this fact.
Edit2: The define is in C:\msys64\mingw64\include\c++\10.2.0\x86_64-w64-mingw32\bits\os_defines.h
I have yet to find if it is defined for C only code.
Tim S.
omlk:
https://en.cppreference.com/w/c/types/integer
https://en.cppreference.com/w/cpp/types/integer
oBFusCATed:
@stahta01: I guess omlk wanted to point you to PRxNN macros, but he/she was so vague that I'm not sure he/she succeeded :)
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version