C++ MinGW-w64编译失败,为nullptr\t
我正在尝试用mingw-w64编译cpputest,但失败了,因为它找不到nullptr\t。失败的函数是cpputest\src\cpputest\SimpleString.cpp:StringFromC++ MinGW-w64编译失败,为nullptr\t,c++,mingw-w64,C++,Mingw W64,我正在尝试用mingw-w64编译cpputest,但失败了,因为它找不到nullptr\t。失败的函数是cpputest\src\cpputest\SimpleString.cpp:StringFrom SimpleString StringFrom(const nullptr_t value) { (void) value; return "(null)"; } 我试图用 C:\mingw-w64\i686-8.1.0-posix-dwarf-rt\u v6-rev0\mi
SimpleString StringFrom(const nullptr_t value)
{
(void) value;
return "(null)";
}
我试图用
C:\mingw-w64\i686-8.1.0-posix-dwarf-rt\u v6-rev0\mingw32\bin\g++.exe-DCPPUTEST\u HAVE\u STRDUP=1-DHAVE\u CONFIG\u H-D\u TIMESPEC\u DEFINED=1@cmakfiles/CppUTest.dir/includes\u CXX.rsp-包括“C:/git/tdd/CppUTest/include/MemoryLeakDetectorNewMacros.H”-包括“C:/git/tdd/CppUTest/CppUTest/emorchmakes”-std=c++11-Wall-Wextra-pedantic-Wshadow-Wswitch default-Wswitch enum-Wconversion-Wsign conversion-Wno padded-Wno long-Woverloaded virtual-Wno旧式cast-Wno-c++14 compat-O2-g-DNDEBUG-o cmakfiles\CppUTest.dir\SimpleString.cpp.obj-c:\git\tdd\CppUTest\src\CppUTest\CppUTest\CppUTest\SimpleString.cpp
它失败了
C:\git\tdd\cpputest\src\CppUTest\SimpleString.cpp:565:31: error: 'nullptr_t' does not name a type
SimpleString StringFrom(const nullptr_t value)
^~~~~~~~~
C:\git\tdd\cpputest\src\CppUTest\SimpleString.cpp:565:31: note: 'nullptr_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
C:\git\tdd\cpputest\src\CppUTest\SimpleString.cpp:32:1:
+#include <cstddef>
C:\git\tdd\cpputest\src\CppUTest\SimpleString.cpp:565:31:
SimpleString StringFrom(const nullptr_t value)
^~~~~~~~~
C:\git\tdd\cpputest\src\CppUTest\SimpleString.cpp:565:14: error: redefinition of 'SimpleString StringFrom(int)'
SimpleString StringFrom(const nullptr_t value)
^~~~~~~~~~
C:\git\tdd\cpputest\src\CppUTest\SimpleString.cpp:479:14: note: 'SimpleString StringFrom(int)' previously defined here
SimpleString StringFrom(int value)
^~~~~~~~~~
C:\git\tdd\cpputest\src\CppUTest\SimpleString.cpp: In function 'SimpleString StringFrom(cpputest_longlong)':
C:\git\tdd\cpputest\src\CppUTest\SimpleString.cpp:576:29: warning: unknown conversion type character 'l' in format [-Wformat=]
return StringFromFormat("%lld", value);
^~~~~~
C:\git\tdd\cpputest\src\CppUTest\SimpleString.cpp:576:29: warning: too many arguments for format [-Wformat-extra-args]
C:\git\tdd\cpputest\src\CppUTest\SimpleString.cpp: In function 'SimpleString StringFrom(cpputest_ulonglong)':
C:\git\tdd\cpputest\src\CppUTest\SimpleString.cpp:581:29: warning: unknown conversion type character 'l' in format [-Wformat=]
return StringFromFormat("%llu", value);
^~~~~~
C:\git\tdd\cpputest\src\CppUTest\SimpleString.cpp:581:29: warning: too many arguments for format [-Wformat-extra-args]
C:\git\tdd\cpputest\src\CppUTest\SimpleString.cpp: In function 'SimpleString HexStringFrom(cpputest_longlong)':
C:\git\tdd\cpputest\src\CppUTest\SimpleString.cpp:586:29: warning: unknown conversion type character 'l' in format [-Wformat=]
return StringFromFormat("%llx", value);
^~~~~~
C:\git\tdd\cpputest\src\CppUTest\SimpleString.cpp:586:29: warning: too many arguments for format [-Wformat-extra-args]
C:\git\tdd\cpputest\src\CppUTest\SimpleString.cpp: In function 'SimpleString HexStringFrom(cpputest_ulonglong)':
C:\git\tdd\cpputest\src\CppUTest\SimpleString.cpp:591:29: warning: unknown conversion type character 'l' in format [-Wformat=]
return StringFromFormat("%llx", value);
^~~~~~
C:\git\tdd\cpputest\src\CppUTest\SimpleString.cpp:591:29: warning: too many arguments for format [-Wformat-extra-args]
这个错误没有任何意义,因为我包含了cstddef
这一问题与环境有关
感谢您的帮助 修复非常简单:
SimpleString StringFrom(const std::nullptr_t value)
{
(void) value;
return "(null)";
}
感谢NathanOliver-让Monica恢复原职,帮你解决这个问题。解决办法很简单:
SimpleString StringFrom(const std::nullptr_t value)
{
(void) value;
return "(null)";
}
感谢NathanOliver-让Monica帮你解决这个问题。你确定文件中包含
?如果你对#include void foo(nullptr_t){}int main(){foo(nullptr);}
进行编译,编辑问题。是的,我肯定。除非我产生幻觉,而且那#include
没有我认为的效果。这个最小的例子编译了吗?或者你也因此得到了一个错误?啊,是的nullptr\u t
不保证在std::
之外。您可以使用std::nullptr\u t将添加到文件的顶部以修复该问题。或者您可以像使用其他任何std类型一样使用std::nullptr\u t
。您确定该文件包含
?如果你对#include void foo(nullptr_t){}int main(){foo(nullptr);}
进行编译,编辑问题。是的,我肯定。除非我产生幻觉,而且那#include
没有我认为的效果。这个最小的例子编译了吗?或者你也因此得到了一个错误?啊,是的nullptr\u t
不保证在std::
之外。您可以使用std::nullptr\u t
将添加到文件的顶部以修复该问题。或者您也可以像使用其他任何std类型一样使用std::nullptr\u t
。。。
SimpleString StringFrom(const std::nullptr_t value)
{
(void) value;
return "(null)";
}