看板 Soft_Job 關於我們 聯絡資訊
(我曾經看過有人在macro裡頭用strlen,真的是不知道腦袋在想啥...)
prokofieff:我想問macro為什麼不能放strlen呀 02/08 21:47
那你可能得去查一下"Pre Processing"是在幹嘛的了XD strlen()的結果是runtime的時候才知道的,要在macro裡頭求字串長度應該要用sizeof。 不過根據公司裡的神級長輩說很多人都不知道sizeof其實是operator...XD
mcwu:原PO這種程度進大公司應該不會有啥問題吧!?... 02/08 23:12
事實上就真的一堆大公司(ex: Asus/HTC)把我打槍阿囧 但我被打槍的理由不是因為筆試成績差,而是因為我的出身0rz 另一方面可能當初剛開始找工作面試的時候很緊張,所以口試都講不太好XD ※ 編輯: RouterHsieh 來自: 1.171.59.242 (02/08 23:42)
specman:看您的推文回應, 您C還是不及格喔... 02/08 23:49
RouterHsieh:如果我講的有誤的話,那還請樓上的指點一下囧 02/09 00:03
RouterHsieh:畢竟我也真的不是強者啦,科科 02/09 00:04
andymai:認真回~推一下~但是"拉豬賽"應該是LDS~而不是LSD...XDDD 02/09 00:22
bleed1979:http://ideone.com/HYtfpw 02/09 03:53
bleed1979:對Pre Processing印象是替換字,不曉得為什麼不行寫。 02/09 03:57
maerdimer:我也不太懂欸-要在macro裡頭求字串長度應該要用sizeof?? 02/09 05:21
我想我的觀念真的不太清楚,請樓上各位前輩見諒。 我當時碰到的狀況大概是這樣: http://ideone.com/efzPjM 然後印出來的錯誤訊息是: strlen_macro.c:8:14: error: variably modified ‘name1’ at file scope 因此我說應該要用sizeof來求, 是基於ISO C在6.6節對於"constant expression"的內容,節錄部分如下: 8. Anarithmetic constant expression shall have arithmetic type and shall only have operands that are integer constants, floating constants, enumeration constants, character constants, and "sizeof" expressions. Cast operators in an arithmetic constant expression shall only convert arithmetic types to arithmetic types, except as part of an operand to a "sizeof" operator whose result is an integer constant. ref: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf 小弟才疏學淺,畢竟是好幾個月前碰到的問題,難免記得不太清楚。 感謝樓上各位前輩的指教,又在讓我回頭複習了一次XD 另外既然在下的C語言程度不及格,那我也不好意思留著前面那堆屁話了, 因此我把我前面的文章都砍了,只留下我程度不好的證據和後續回應而已。 若是後面寫的東西還有什麼錯的,還請各位前輩指點一下,感謝:) ※ 編輯: RouterHsieh 來自: 1.171.59.242 (02/09 10:57)
prokofieff:這個情況是不行沒錯 但是是因為你把MACRO當constant 02/09 20:15
prokofieff:所以不是說都不行放 要看情況 02/09 20:16
※ 編輯: RouterHsieh 來自: 1.171.59.242 (02/09 21:33)