我有以下代碼:ç未定義參考
的main.c
#include "checksum.h"
void main()
{
char *Buf ="GPGGA204502.005106.9813N11402.2921W1090.91065.02M-16.27M";
checksum(Buf);
}
checksum.c
#include <stdio.h>
#include <string.h>
checksum(char *Buff)
{
int i;
unsigned char XOR;
unsigned long iLen = strlen(Buff);
printf("Calculating checksum...\n");
for (XOR = 0, i = 0; i < iLen; i++)
XOR ^= (unsigned char)Buff[i];
printf("%X \n",XOR);
}
checksum.h
#ifndef CHECKSUM_H_INCLUDED
#define CHECKSUM_H_INCLUDED
void checksum(char *Buff);
#endif
編譯時,我得到出現以下錯誤:
/tmp/ccFQS7Ih.o: In function `main':
main.c:(.text+0x18): undefined reference to `checksum'
collect2: ld returned 1 exit status
我找不出什麼問題了?
你能後的編譯器命令這兩個文件鏈接在一起?構建'main'時需要鏈接'checksum.o'。 – hmjd 2012-03-20 10:34:49
編譯時也會收到警告(如果不是,編譯器設置不好)。你的函數聲明(這是.h文件中的)和它的定義(即.c中的內容)不匹配。通過在校驗和之前不寫入'void',函數被重新聲明爲返回int的函數。 – 2012-03-20 12:09:25