راکت

اینکلود کردن فایل .c و .h در vscode

2 پاسخ

سلام به همه
تازه کار هستم لطفا راهنماییم کنید
میخوام توی محیط vscode با زبان C توی تابع main اصلی از توابعی که توی یه فایل دیگه هست استفاده کنم.
ابتدای برنامه هدر فایل رو include کردم اما موقع اجرا کردن اون قسمت هایی که از توابع یک فایل دیگه استفاده شده خطا میده و میگه نمیشناستشون
سیستم عامل اوبونتو (لینوکس) هست.

main.c:(.text+0x2af): undefined reference to `func1'
/usr/bin/ld: main.c:(.text+0x2e0): undefined reference to `func2'

وقتی تنها از خود فایل main.c استفاده میکنم مشکلی نداره و برنامه

printf("hello world");

اجرا میشه و خروجی میده اما نمیدونم چجوری باید آدرس فایل های دیگه یا کتابخونه هایی که خودم نوشتم رو بهش اضافه کنم


در کل استفاده اصلیم از vscode اینه که بتونم برای زبان c برنامه هایی رو بنویسم و کتابخونه هایی اضافه کنم و توی محیط کنسول اجراش رو ببینم تا بتونم برنامه هام رو دیباگ کنم.

پیشاپیش ممنون

ثبت پرسش جدید

پاسخ‌ها

2
kook65247
kook65247
@kook65247

عجب انجمن فعالی!!!

mehrixa
mehrixa
@mahdirigaei

تخصص: بازی ساز ++c

سلام اول از اینکه اطمینان پیدا کنید که درست فایل ها رو کامپایل میکنید بزارید یک مثال براتون بزنم

#include <stdio.h>
#include "test.h"

int main()
{
    printf("factorial is %d", factorial(3));
    return 0;
}

این فایلی هست که دارای متد main هست که میبینید یک متدی به نام factorial که میاد فکتوریال یک عددی رو بدست میاره رو از هدر فایل گرفتم و استفاده کردم

unsigned long long factorial(unsigned long long n);

این محتویات فایل هدر فایل هست

#include "test.h"

unsigned long long factorial(unsigned long long n) {
    if (n == 0)
        return 1; // base case
    return n * factorial(n - 1); // recursive case
}

این فایل نحوه ی انجام کار را نشان میدهد که برای اینکه این فایل با هدر فایل ارتباط برقرار کند باید خود هدر فایل رو به این فایل اظافه کرد
حالا اگه بخوایم این رو کامپایل کنید باید هم فایلی که تابع main داشت رو کامپایل کنید و هم فایلی که نوشتیم تابع factorial چطوری کار میکنه رو هم باید کامپایل کنید که به این شکل هست به فرض مثال اگر فایل تابع main اسمش main.c و هدر فایل factorial.h و خود تعریف تابع که در فایل مثلا factorial.c قرار دارد پس نحوه کامپایل به این صورت میشه
gcc main.c factorial.c
اینطوری بعد از کامپایل فایلی به نام a.exe میاد که باید اون رو اجرا کنید

شاید پاسخ شما همین‌جا باشد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام