mirror of
https://github.com/Tencent/ncnn.git
synced 2026-10-26 02:46:47 +08:00
fix build on msvc, second try
This commit is contained in:
+15
-7
@@ -228,24 +228,32 @@ int Net::load_param(FILE* fp)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int mem_sscanf_pn(const char*& ptr, const char* format, ...)
|
||||
#if _MSC_VER
|
||||
static inline int mem_sscanf_with_n(int* _internal_nconsumed_ptr, const char*& ptr, const char* format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
|
||||
int nconsumed = 0;
|
||||
int nscan = sscanf(ptr, format, args, &nconsumed);
|
||||
ptr += nconsumed;
|
||||
int _n = vsscanf(ptr, format, args);
|
||||
|
||||
va_end(args);
|
||||
|
||||
return nconsumed > 0 ? nscan : 0;
|
||||
}
|
||||
ptr += *_internal_nconsumed_ptr;
|
||||
|
||||
#define mem_sscanf(ptr, format, ...) mem_sscanf_pn(ptr, format "%n", __VA_ARGS__)
|
||||
return *_internal_nconsumed_ptr > 0 ? _n : 0;
|
||||
}
|
||||
#define mem_sscanf(ptr, format, ...) mem_sscanf_with_n(&_internal_nconsumed, ptr, format "%n", __VA_ARGS__, &_internal_nconsumed)
|
||||
#else
|
||||
// return value from macro requires gcc extension https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html
|
||||
#define mem_sscanf(ptr, format, ...) ({int _b=0; int _n = sscanf(ptr, format "%n", __VA_ARGS__, &_b); ptr+=_b;_b>0?_n:0;})
|
||||
#endif // _MSC_VER
|
||||
|
||||
int Net::load_param_mem(const char* _mem)
|
||||
{
|
||||
#if _MSC_VER
|
||||
int _internal_nconsumed;
|
||||
#endif
|
||||
|
||||
int magic = 0;
|
||||
const char* mem = _mem;
|
||||
mem_sscanf(mem, "%d", &magic);
|
||||
|
||||
+15
-7
@@ -174,24 +174,32 @@ int ParamDict::load_param(FILE* fp)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int mem_sscanf_pn(const char*& ptr, const char* format, ...)
|
||||
#if _MSC_VER
|
||||
static inline int mem_sscanf_with_n(int* _internal_nconsumed_ptr, const char*& ptr, const char* format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
|
||||
int nconsumed = 0;
|
||||
int nscan = sscanf(ptr, format, args, &nconsumed);
|
||||
ptr += nconsumed;
|
||||
int _n = vsscanf(ptr, format, args);
|
||||
|
||||
va_end(args);
|
||||
|
||||
return nconsumed > 0 ? nscan : 0;
|
||||
}
|
||||
ptr += *_internal_nconsumed_ptr;
|
||||
|
||||
#define mem_sscanf(ptr, format, ...) mem_sscanf_pn(ptr, format "%n", __VA_ARGS__)
|
||||
return *_internal_nconsumed_ptr > 0 ? _n : 0;
|
||||
}
|
||||
#define mem_sscanf(ptr, format, ...) mem_sscanf_with_n(&_internal_nconsumed, ptr, format "%n", __VA_ARGS__, &_internal_nconsumed)
|
||||
#else
|
||||
// return value from macro requires gcc extension https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html
|
||||
#define mem_sscanf(ptr, format, ...) ({int _b=0; int _n = sscanf(ptr, format "%n", __VA_ARGS__, &_b); ptr+=_b;_b>0?_n:0;})
|
||||
#endif // _MSC_VER
|
||||
|
||||
int ParamDict::load_param_mem(const char*& mem)
|
||||
{
|
||||
#if _MSC_VER
|
||||
int _internal_nconsumed;
|
||||
#endif
|
||||
|
||||
clear();
|
||||
|
||||
// 0=100 1=1.250000 -23303=5,0.1,0.2,0.4,0.8,1.0
|
||||
|
||||
Reference in New Issue
Block a user