[問題] 自訂標頭檔

作者: jacky1989   2014-10-26 03:50:37
開發平台(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
程式在編譯時,會顯示已經被參考了
我該怎麼改才對?
先謝謝了
作者: LPH66 (-6.2598534e+18f)   2014-10-26 17:55:00
完整錯誤訊息貼上來看看另外你的 B() 違反了置底十三誡之五十三誡之五的問題去置底看一看吧, 那裡有提正確的做法然後這個錯誤訊息是指"連結器找不到 round, 它是在 coef 裡用到的" 你應該是忘了加入 round 所在的檔案一起連結了
作者: wope (獨立黑色色彩)   2014-10-27 05:25:00
void B(char str[50]);
作者: Killercat (殺人貓™)   2014-10-27 15:37:00
這樣不算違反 但是實務上是災難除非你有什麼很好的方式去指示使用者去delete那個char*喔應該說"free"那個char*. new/delete最好在同scope

Links booklink

Contact Us: admin [ a t ] ucptt.com