我正在运行Linux Mint。版本信息如下:sfml编译错误:NULL未在此范围内声明
$ cat /etc/*-release
DISTRIB_ID=LinuxMint
DISTRIB_RELEASE=12
DISTRIB_CODENAME=lisa
DISTRIB_DESCRIPTION="Linux Mint 12 Lisa"
我试图编译和链接文件使用SFML C++程序。当试图编译文件,我得到以下错误:
$g++ -c lineTest.cpp Rasterizer.cpp simpleCanvas.cpp
In file included from /usr/local/include/SFML/System/Resource.hpp:211:0,
from /usr/local/include/SFML/Graphics/Image.hpp:31,
from simpleCanvas.h:13,
from simpleCanvas.cpp:9:
/usr/local/include/SFML/System/ResourcePtr.inl:
In constructor ‘sf::ResourcePtr< <template-parameter-1-1> >::ResourcePtr()’:
/usr/local/include/SFML/System/ResourcePtr.inl:31:12:
error: ‘NULL’ was not declared in this scope
/usr/local/include/SFML/System/ResourcePtr.inl: In member function ‘void sf::ResourcePtr< <template-parameter-1-1> >::OnResourceDestroyed()’:
/usr/local/include/SFML/System/ResourcePtr.inl:148:18: error: ‘NULL’ was not declared in this scope
这似乎也与在文件ResourcePtr.inl使用“NULL”的问题。就个人而言,我通常不会使用这个关键字,而是使用0,但是当我在我自己甚至没有写的包文件中使用它时,我能做些什么?此外,没有我的管理员权限,我将无法编辑文件来纠正它,但我使用sudo编辑它并添加了#include <cstddef>
。这就打开了闸门,出现了一些类似问题,其中“未定义”或者某个关键字或类型未被识别(该列表对于我来说这里太长了)。这似乎表明图书馆缺少某些东西。最初设置库时遇到了一些麻烦,所以我意识到我可能没有正确完成它。你可以在this question here看到它。有谁知道我做错了什么和/或我能做些什么来解决这个问题?
值得注意的是,'(void *)0'是C中'NULL'的常用定义,但在C++中不能如此。在C++ 98中,它必须是值为0的整数常量,例如“0”或“0L”。 – rodrigo 2013-03-20 00:35:51