yorkie / serve

a tiny server for serving static files and website, no any other runtime required based on mongoose.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Compile error in Win32 env.

PixMod opened this issue · comments

serve/mongoose.h

Lines 483 to 487 in bdb72b4

#if !(_XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L) && \
!(__DARWIN_C_LEVEL >= 200809L) && !defined(RTOS_SDK) || \
defined(_WIN32)
int strnlen(const char *s, size_t maxlen);
#endif

[错误 C2556 “int strnlen(const char *,size_t)”: 重载函数与“size_t strnlen(const char *,size_t)”只是在返回类型上不同

推测预编译条件有误?RTOS_SDK与_WIN32是否组织在一起:

#if !(_XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L) &&    \
        !(__DARWIN_C_LEVEL >= 200809L) && !(defined(RTOS_SDK) || defined(_WIN32))
int strnlen(const char *s, size_t maxlen);
#endif

同样也需要修改

serve/mongoose.c

Lines 921 to 930 in bdb72b4

#if !(_XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L) && \
!(__DARWIN_C_LEVEL >= 200809L) && !defined(RTOS_SDK) || \
defined(_WIN32)
int strnlen(const char *s, size_t maxlen) {
size_t l = 0;
for (; l < maxlen && s[l] != '\0'; l++) {
}
return l;
}
#endif

这里应该是 https://github.com/cesanta/mongoose 的问题,不过我搜索了最新的代码,貌似已经移除了 WIN32 下 strlen() 的定义,不过有空的话,“Pull Request is very welcome“。