[英]Understanding how to call functions from another source file in C
我試圖正確理解如何從C中的另一個源文件調用C函數。我有一個簡單的例子,我正在努力工作。 我有兩個函數,function1和function2,它們包含在file.c中。 我試圖從main.c調用函數2 bur接收錯誤“未定義的函數2引用”。
main.c中
#include <stdio.h>
#include <stdlib.h>
#include "file.h"
int main()
{
int result = function2(3);
printf("Result = %d ", result);
return 0;
}
file.c
int function1(int a) /* Function 1 definition */
{
int val = a*a;
return val;
}
int function2(int val) /* Function 2 definition */
{
return val +5;
}
file.h
#ifndef FILE_H_INCLUDED
#define FILE_H_INCLUDED
extern int function1(int a) ;
extern int function2(int val);
#endif // FILE_H_INCLUDED
(我知道function1和function2可以組合成一個函數,但我想理解為什么這個例子不起作用! - 謝謝)
將代碼復制/粘貼到main.c file.c file.h中可以正常工作
其他與問題無關的好建議:
設置 - >編譯器 - >編譯器標志選項卡。 檢查-Wall -Wextra和-pedantic-errors對應的選項。 如果沒有C11選項,請添加一個。 看到這個 。
正如有人指出的那樣,你應該始終從#include "file.h"
您的源代碼是正確的。 您可能沒有做的是將兩個目標文件鏈接在一起以創建可執行文件。
從命令行,將兩個文件編譯為目標文件
cc -Wall -std=c11 -c main.c
創建main.o
cc -Wall -std=c11 -c file.c
創建file.o
然后鏈接他們
cc -o my-executable main.o file.o
然后你將有一個名為my-executable
的可運行二進制my-executable
。 如果你有一個IDE,將有一個等效的方法來執行上述操作,但它將取決於IDE。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.