我組建了我的項目,將main和c源保存在一個文件中,並將頭文件保存在codeblock的include目錄中。 當我從項目主函數中調用我的函數時,它編譯的很漂亮..但是當我使用其他文件的頭文件時,編譯器找不到函數。原型在頭文件中,但它們的定義位於另一個文件中的源代碼中。我可以訪問存儲在頭文件中的預處理器常量和宏,但函數原型與其源代碼之間的鏈接看起來並不存在於實際項目之外。無法創建可從我的程序訪問的C頭文件
我的目標是製作頭文件,就像我正在使用的現有頭文件(stdio.h,stdlib.h等)。我找不到任何有用的東西。幫助我,我已經在這裏好幾天了!
我知道我可以使用功能更容易的.c文件,但我想要的挑戰,想創建lib文件,我是一個性能怪胎(據我所知使用.h文件,而不是.c文件是更有效,不記得爲什麼,雖然)
頭文件:
#ifndef FIRO_H_INCLUDED
#define FIRO_H_INCLUDED
#include <stdbool.h>
#define MA_TA 69
bool checkprime(unsigned long long);
int square(int);
#endif // FIRO_H_INCLUDED
源代碼:
#include "firo.h"
#include <math.h>
bool checkprime(unsigned long long prime)
{
unsigned long long root=(unsigned long long)(sqrt(prime)+1);
unsigned long long i;
for(i=2; i<=root; i<3?(i++):(i+=2))
{
if(prime%i==0)
return false;
}
return true;
}
int square(int a)
{
return a*a;
}
我所期待的一個答案,而不是諷刺。我確實在某個地方看到,將代碼分割成.h文件和源代碼將會以某種方式加速訪問函數的過程,不要責怪我不知道它是如何工作的。我實際使用的checkprime函數,其餘部分僅用於測試。
您正在尋找的詞是'linkage'。 – 2012-12-19 17:26:20
我們可以看到標題嗎? – Linuxios
在較大的情況下,對於共享庫而言,.h並不更高效,只是較小的一個。特別是對於像C庫這樣的東西。我想起了一個將C庫作爲靜態的系統...... – Linuxios