奇怪的行为。 我用c ++开发了android原生应用程序,并且遇到了bug。某些功能由于某种原因未被调用。经过一些还原和比较..
这使程序麻烦..
const std::string STR_PATH_ASSET("assets/");
const std::string STR_PATH_SD("/sdcard/unlock_data/assets/");
const std::string STR_SUFFIX_PNG(".png");
const std::string STR_SUFFIX_KTX(".ktx");
这使程序工作..
std::string const STR_PATH_ASSET("assets/");
std::string const STR_PATH_SD("/sdcard/unlock_data/assets/");
std::string const STR_SUFFIX_PNG(".png");
std::string const STR_SUFFIX_KTX(".ktx");
它无论如何都有效,但我不知道为什么这种差异会导致这种奇怪的行为。任何猜测??
添加了完整的来源。
它不仅是“std :: string const”与“const std :: string”问题,而且是声明本身。遗憾。
这是我的源代码。当我取消注释那些std :: string时它无法正常工作。我正在绘制一些东西到我的机器人但是一些网格(顶点)的初始位置在使用std :: string时不同。逻辑上它不应该影响这个常数是否存在。我在windows cygwin上使用ndk编译器版本4.6,ndk ver 14。这个const std :: string声明会影响到另一个堆栈的内存吗?即。 transh值还是什么?
typedef enum _ImageCompressType{
//REF http://stackoverflow.com/questions/9148795/android-opengl-texture-compression
COMPRESS_UNAVAILABLE = -1,
COMPRESS_ETC1 = 1,
COMPRESS_PVRTC,
COMPRESS_ATITC,
COMPRESS_S3TC
}ImageCompressType;
typedef enum _FileDataFrom{
FROM_ASSET, FROM_SD
}FileDataFrom;
//std::string const STR_PATH_ASSET("assets/");
//std::string const STR_PATH_SD("/sdcard/unlock_data/assets/");
//std::string const STR_SUFFIX_PNG(".png");
//std::string const STR_SUFFIX_KTX(".ktx");
class ImagesLoader {
public:
ImagesLoader* mgr;
static ImagesLoader* getInstance();
static void destroyInstance();
ImageCompressType TypeImgComrpess;
// GLuint* loadTextures(FileDataFrom from, std::vector<std::string> filename);
private:
ImagesLoader() {}
~ImagesLoader() {}
static ImagesLoader* self;
};
答案 0 :(得分:4)
取自: http://www.cprogramming.com/tutorial/const_correctness.html
声明一个const变量时,可以在类型之前或之后放置const
int const x = 5;
和
const int x = 4;
导致x为常数整数。
您提供的代码示例不是您遇到的“奇怪行为”的原因。