[问题] #define一个string in linux

楼主: vvrr (vvrr)   2015-07-06 12:38:56
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Ubuntu 14.04LTS
问题(Question):
在程式里先:
#define __BUILD_DATE__ " B:20150702 "
然后在其他档案里再:
const unsigned char* g_BUILDDATE = __BUILD_DATE__ ;
错误结果(Wrong Output):
在compile的时候有warning:
warning: pointer targets in initialization differ in signedness
[-Wpointer-sign] #define __BUILD_DATE__ " B:20150702 "
note: in expansion of macro ‘__BUILD_DATE__’ const unsigned char*
g_BUILDDATE = __BUILD_DATE__ ;
补充说明(Supplement):
在Win和Android平台上似乎都不会有warning,但是在ubuntu上就会有…
想请问问题是出在哪里…
谢谢
作者: kdjf (我抓得到什么呢?)   2015-07-06 13:09:00
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=23087VC系列编译器非常的forgiving不过现在比较严谨了
作者: Killercat (杀人猫™)   2015-07-06 13:47:00
er...android平台是啥意思囧
作者: kdjf (我抓得到什么呢?)   2015-07-06 21:34:00
他大概是说sdk吧
作者: akasan (KITO)   2015-07-07 01:57:00
char是signed或unsigned是依照该平台ABI而定然后Android/ARM 是 unsigned最简单解法就是把const unsigned char* 的unsigned 拿掉
楼主: vvrr (vvrr)   2015-07-07 11:49:00
谢谢大家,我把unsigned拿掉,warning就消失了...android平台是指用android sdk build的情形@@

Links booklink

Contact Us: admin [ a t ] ucptt.com