[問題] #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