问题(Question):
在一本老书里面看到一段对于可移植性的叙述跟程式码 但是想不出来原因是什么
(书名:beginning linux programming, first edition)
程式码如下面所附, 看程式码像是C语言, 因为函数宣告好像是C语言的隐式宣告
书中是说 若此段程式在不同endian的系统下执行, 会有问题, 原因出在(1)取参数
的位址. 没有更多的情境说明惹 @[email protected]
不懂的地方在于参数zz只有char大小,大小端的问题应该"永远"不会发生阿
那如果, 假设这段程式在小端系统下编译然后执行于大端, 且char zz被扩展为int
那使用 (1)的pointer去存取这个int大小的东西, 似乎"有可能"出问题,
但是在这个情境, (2)也可能会有问题吧?
总之 想不出为什么这段程式可能有移植性问题 跟为什么(1)不好,(2)安全
请各位先进帮忙解惑阿~~~ 感谢~~~~
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
char z;
func(z);
func(char zz){
char * p,tmp;
p =&zz / *(1) not good * /
tmp = zz;
p =&tmp / *(2)much safer /
/ * ... * /
}