رفتن به مطلب
مرجع رسمی سی‌پلاس‌پلاس ایران
  • 0
farshid_56

افزودن سورس کدهای مختلف


سوال

با سلام خدمت دوستان میخواستم بپرسم کسی از دوستان میدونه چطور میتونم دو یا چند سورس کد مختلف رو در قالب یک پروژه ی سی پلاس پلاس تعریف کنم؟

این کار رو در کدبلاک انجام دادم ولی متاسفانه موقع کامپایل کردن در هر دو تا سورس کد خطای استفاده ی چندباره از تابع main رو ازم گرفت.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

1 پاسخ به این سوال تا کنون داده شده است

پست های پیشنهاد شده

  • 0

سلام و درود بر شما؛

خب شما باید از اون APIهایی که دو پروژهٔ مختلف به‌شما می‌دهند استفاده کنید، و  فقط یک تابع Main را نگه‌داری کنید. برای مثال، ما دو Source code داریم که به این‌صورت تعریف شده‌اند:

main_1.cpp:

#include <algorithm>
#include <iostream>
#include <vector>

using vec_int = std::vector<int>;

void print_vector(const vec_int& in)
{
    std::for_each(in.begin(), in.end(), [](const auto& i) { std::cout << i << std::endl; });
}

int main(void)
{
    vec_int my_vec(10);
    print_vector(my_vec);
}

 

و یک Source code دیگر:

main_2.cpp:

#include <algorithm>
#include <iostream>
#include <vector>
#include <ctime>

using vec_int = std::vector<int>;

void initilization_vector(vec_int& in)
{
    std::srand(std::time(nullptr));

    std::generate(in.begin(), in.end(), []() { return std::rand() % 100; });
}

int main(void)
{
    vec_int my_vec(10);
    initilization_vector(my_vec);
}

 

حالا برای اینکه‌ما بتوانیم از APIهای این Source codeها استفاده کنیم ابتدا یک Header file درست می‌کنیم و اعلان‌های APIهای مورد نظرمان را داخل آن می‌نویسیم:

my_api.h:

#ifndef MY_API_H
#define MY_API_H

#include <algorithm>
#include <iostream>
#include <vector>
#include <ctime>

using vec_int = std::vector<int>;

namespace api
{
void print_vector(const vec_int& in);
void initilization_vector(vec_int& in);
} // namespace api

#endif // MY_API_H

همچنین برای تعاریف از یک Source file دیگر استفاده می‌کنیم:

my_api.cpp:

#include "my_api.h"

void api::print_vector(const vec_int &in)
{
    std::for_each(in.begin(), in.end(), [](const auto &i) { std::cout << i << std::endl; });
}

void api::initilization_vector(vec_int &in)
{
    std::srand(std::time(nullptr));

    std::generate(in.begin(), in.end(), []() { return std::rand() % 100; });
}

حال به راحتی می‌توانیم در پروژهٔ تازه ایجاد کردهٔ خودمان از این APIهایی که از دو Source code مختلف با دو Main جدا جمع‌آوری شده را استفاده کنیم:

main.cpp:

#include "my_api.h"

int main(void)
{
    vec_int my_vec(10);

    api::initilization_vector(my_vec);
    api::print_vector(my_vec);
}

 

نمایی از محیط Code::blocks برای پروژهٔ بالا:

image.thumb.png.bb34f5bdf0584094e35298b90375cf0e.png

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو ملحق شوید

شما همین الآن می‌توانید مطلبی را ارسال و بعداً ثبت‌نام کنید. اگر حساب کاربری دارید، و با حساب کاربری خود مطلب ارسال کنید.
نکته: مطلب شما قبل از انتشار نیاز به بازبینی توسط میانجی‌گر‌ها دارد.

مهمان
پاسخ به این سوال ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از ۷۵ اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • جدید...