Fix #10
This commit is contained in:
1 parent
b537ae6b5d
commit
38413f2452
1 file changed
+25
-2
+25
-2
@@ -731,11 +731,34 @@ string_in_str(string_t v, FILE *f)
|
|||||||
.ptr = s}})
|
.ptr = s}})
|
||||||
which produces faster code.
|
which produces faster code.
|
||||||
Note: This code doesn't work with C++ (use of c99 feature
|
Note: This code doesn't work with C++ (use of c99 feature
|
||||||
of recursive struct definition)
|
of recursive struct definition). As such, there is a separate
|
||||||
|
C++ definition.
|
||||||
*/
|
*/
|
||||||
#define STRING_CTE(s) \
|
#ifndef __cplusplus
|
||||||
|
# define STRING_CTE(s) \
|
||||||
((const string_t){{.size = sizeof(s)-1, .alloc = sizeof(s), \
|
((const string_t){{.size = sizeof(s)-1, .alloc = sizeof(s), \
|
||||||
.ptr = ((struct { int _n; char _d[sizeof (s)]; }){ 0, s })._d }})
|
.ptr = ((struct { int _n; char _d[sizeof (s)]; }){ 0, s })._d }})
|
||||||
|
#else
|
||||||
|
namespace m_string {
|
||||||
|
template <int N>
|
||||||
|
struct m_aligned_string {
|
||||||
|
string_t string;
|
||||||
|
union {
|
||||||
|
char str[N];
|
||||||
|
int i;
|
||||||
|
};
|
||||||
|
inline m_aligned_string(const char lstr[])
|
||||||
|
{
|
||||||
|
this->string->size = N -1;
|
||||||
|
this->string->alloc = N;
|
||||||
|
memcpy (this->str, lstr, N);
|
||||||
|
this->string->ptr = this->str;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
#define STRING_CTE(s) \
|
||||||
|
m_string::m_aligned_string<sizeof (s)>(s).string
|
||||||
|
#endif
|
||||||
|
|
||||||
#define STRING_INIT_PRINTF(v, format, ...) do { \
|
#define STRING_INIT_PRINTF(v, format, ...) do { \
|
||||||
string_init (v); \
|
string_init (v); \
|
||||||
|
|||||||
Reference in new issue
Block a user