推 LPH66: 完整錯誤訊息貼上來看看 10/26 17:55
→ LPH66: 另外你的 B() 違反了置底十三誡之五 10/26 17:56
因為我原本的程式比較長,所以這邊貼上來的程式碼沒有跟原本一樣,但是大同小異
以下是原本的錯誤訊息
coef.obj : error LNK2019: 無法解析的外部符號 "double __cdecl round(double)"
(?round@@YANN@Z) 在函式 "void __cdecl coef(void)" (?coef@@YAXXZ) 中被參考
還有,如果我要做到B()裡面的功能
那我要怎麼改才不違反13誡之5?
煩請指導,謝謝
※ 編輯: jacky1989 (118.233.78.140), 10/26/2014 19:54:08
推 LPH66: 十三誡之五的問題去置底看一看吧, 那裡有提正確的做法 10/26 21:35
→ LPH66: 然後這個錯誤訊息是指"連結器找不到 round, 它是在 coef 裡 10/26 21:36
→ LPH66: 用到的" 你應該是忘了加入 round 所在的檔案一起連結了 10/26 21:36
推 wope: void B(char str[50]); 10/27 05:25
我有加入這個檔案,好像是在coef已經被include了,所以在其他函式就不能include了
不知道要怎麼改.....
還有,那如果我在B裡面這樣打
char *B(){
char *str;
str = (char *)malloc(sizeof(*str)*50+1);
sprintf(str,"Hello world.");
return str;
}
這樣是否也違反13誡之5呢??這樣是不是違反13誡之6阿= =
※ 編輯: jacky1989 (140.136.146.114), 10/27/2014 15:35:40
推 Killercat: 這樣不算違反 但是實務上是災難 10/27 15:37
→ Killercat: 除非你有什麼很好的方式去指示使用者去delete那個char* 10/27 15:37
→ Killercat: 喔應該說"free"那個char*. new/delete最好在同scope 10/27 15:38
所以我原本是要這樣的功能
printf("%s",B());
應該改成這樣
void *B(char *str){
sprintf(str,"Hello world");
}
----------------------
char str_tmp[50];
B(str_tmp);
printf("%s",str_tmp);
這樣對嗎?
※ 編輯: jacky1989 (140.136.146.114), 10/27/2014 16:42:47