為什麼這篇c自訂標頭檔鄉民發文收入到精華區:因為在c自訂標頭檔這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者jacky1989 (幻想的夢境)看板C_and_CPP標題[問題] 自訂標頭檔時間Sun Oc...
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC2010
問題(Question):
我使用自訂標頭檔給兩個不同的C file用,但是編譯器一直顯示已經被參考
我該如何修改?
程式碼(Code):(請善用置底文網頁, 記得排版)
//這是標頭檔 sh.h
#ifndef _S_H
#define _S_H
double A(double);
char *B();
#endif
//enf of header file
//這是source file
#include<stdlib.h>
#include<stdio.h>
#include "sh.h"
double A(double x){
if(x>0)
return 0;
else
return -1;
}
char *B(){
char str[50];
sprintf(str,"Hello world!\n");
return str;
}
//end of source file
//這是主程式
#include<stdlib.h>
#include<stdio.h>
void p1();
void p2();
int main(){
p1();
p2();
system("pause");
return 0;
}
//end of main program
//這是p1.cpp
#include<stdio.h>
#include "sh.h"
void p1(){
A(5.5);
B();
}
//end of p1.cpp
//這是p2.cpp
#include<stdio.h>
#include "sh.h"
void p2(){
A(4.5);
}
//end of p2.cpp
程式在編譯時,會顯示已經被參考了
我該怎麼改才對?
先謝謝了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.233.78.140
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1414266642.A.3C6.html
因為我原本的程式比較長,所以這邊貼上來的程式碼沒有跟原本一樣,但是大同小異
以下是原本的錯誤訊息
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
不知道要怎麼改.....
還有,那如果我在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
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