السلام عليكم انا عايز
تضمين header داخل cpp لنتاج object
انا بستخدم نظام لينكس
السلام عليكم انا عايز
تضمين header داخل cpp لنتاج object
انا بستخدم نظام لينكس
وعليكم السلام ورحمة الله وبركاته ،
السؤال غير واضح ، نرجو التوضيح أكثر.
وبشكل عام اذا أردت تضمين ملف .h في ملف .cpp فقط استخدم ال include directive
#include "your_header.h"
وهنا سيقوم المترجم بالبحث عن ملف الرأس your_header.h في المسار الموجود فيه الملف .cpp ، واذا لم يجده فانه سيبحث في المسارات المعروفه لديه مسبقا (/usr/include/ مثلا).
بالتوفيق.
هذا الكود يضمين .h واذا كان الكود خطا ارجو التصحيح والافادة
gcc -c main.cpp -o main.o
awmn كتب:هذا الكود يضمين .h واذا كان الكود خطا ارجو التصحيح والافادة
gcc -c main.cpp -o main.o
افتكر عندما كان يوجد اكثر من ملف وتم تضمين اكثر من ملف هيدر كنت اضطر الى كتابة اسمائها فى عملية ال Compile أو ال Linking
لو كان الكود كدا
صفحة ال main.cpp
#include "your_header.h"
#include <stdio.h>
int main()
{
px()
return 0;
}صفحة your_header.h
#ifdef yout_Header #define your_Header void px(); #endf
صفحة your_header.cpp
#include "your_header.h"
void px()
{
printf("%s\n","ArabTeam2000");
}لذلك سيكون امر عملية ال Compile كالاتى :
gcc -c main.cpp your_header.cpp -o main
بالتوفيق
تم تعديل هذه المشاركة بواسطة eramax في 2 ديسمبر 2009 في 17:01
awmn كتب:هذا الكود يضمين .h واذا كان الكود خطا ارجو التصحيح والافادة
gcc -c main.cpp -o main.o
عن أي كود تتحدث ؟
هذا الامر
gcc -c main.cpp -o main.o
يقوم بترجمة الملف main.cpp واخراج main.o وهو ال machine code.
وحتى يعمل لك يجب ان تستدعي ال linker لكي يقوم بتحويل الملف الى تنفيذي executable file.
بهذا الامر :
gcc main.o -o your_name
طبعا gcc ليس ال linker وانما سيقوم باستدعاء ال linker وهو ld .
ولتشغيل البرنامج نفذ:
./your_name
حيث أن ال ./ تعني ال current directory.
و your_name هو اسم الملف التنفيذي.
واذا وجد لديك أكثر من ملف cpp قم بتنفيذ ما ذكره لك الاخ eramax
وللاختصار نفذ:
gcc *.cpp -o program
بدون -c حتى لا تحتاج الى عملية link.
ويمكنك ان تستخدم اي build system مناسب في حالة كانت الملفات كثيرة ، وتحتاج الى عمليات ترجمة دائما (مثل make و cmake).
بالتوفيق.