编译以下代码(godbolt):
err:seh:setup_exception stack overflow 1552 bytes in thread 0058 eip 000000007b48dad8 esp 0000000000131000 stack 0x130000-0x131000-0x1130000
在MSVC上出现此错误:
str_replace
而其他编译器(GCC和Clang)乐意接受它。
为什么这段代码不能在MSVC上编译,我该如何解决呢?
答案 0 :(得分:1)
我能够通过从函数签名(Godbolt)中删除引用限定符来进行编译:
constexpr bool f(const char *s) {//No longer passes a pointer by reference
while(*s) { //This avoids undefined behavior when the passed string is empty
++s;
}
return true;
}
constexpr bool g(const char *s) {
return f(s);
}
int main() {
static_assert(g("x"), "");
}
我不知道为什么通过引用传递指针会导致此错误,并且我认为这可能是MSVC编译器中的错误。您应该将错误发布到bug tracking forum。