我正在将代码(在Windows 10中使用C ++ VS2015)移植到通用Windows应用程序(UWP)。它使用一个宏(#define)在编译时连接各种const字符串,并将“const char *”作为参数发送给一个函数(不指向第一个元素)。一个简单的例子如下:
private void Start()
{
target = Transform.Find(character); // <---- here
lastTargetPosition = target.position;
offsetZ = (transform.position - target.position).z;
transform.parent = null;
}
在一个常见的C ++程序中,它打印
const char * s = ((const char *)("xxxx1234" "567" "89") + 4);
printf("[%s]", s );
同样,但对于“通用Windows”,会产生错误:
[123456789] // <-- OK
如果我省略“+ 4”它工作正常,但我得不到正确的指针偏移。打印
error C2440: 'initializing': cannot convert from 'Platform::String ^' to 'const char *'
如何转换类型或避免将字符串定义为Platform :: String?最好在一行中,因为它是(#define)宏
答案 0 :(得分:1)
好的,明白了。将其更改为
const char * s = (const_cast<char *>("xxxx1234" "567" "89") + 4);