الشبكة العربية لمطوري الألعاب

مفصول علي محمد أسماعيل  مشاركة 11

أما في 01 أيلول 2009 05:59 ص، فقد تنهد انس بارتياح وهو يرد:

ان كود الاجراء sprintf غير فابل للقراءة في لغة C اذا الاجراء الذي رايته مشابه لـلـ Sprintf او له نفس الوظيفة.
لم ارى شيئا فكل شيء كان مبهما.

في 01 أيلول 2009 05:59 ص، غمغم انس باستغراب قائلاً:

لكن للتاكد فقط هل من الممكن اسم الملف الذي وجدت فيه الكود ؟

اذا كنت تستخدم VisualStudio قم بكتابة اسم الدالة sprintf ثم قم بتعليم النص ثم أضغط على زر الفأرة اليمين ومن القائمة أختر Go To Definition.
وسيفتح لك مكان وجود الدالة sprintf وقد كان الملف المعرفة به هو stdio.h

بتاريخ 01 أيلول 2009 05:59 ص، قطب انس حاجبيه بشدة وهو يقول:

هل تقصد مثل هذا ☺
http://www.codeproject.com/KB/cpp/cmtrace.aspx?fid=264198&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=1379696
ان هذا الكود مفهوم بالنسبة لي لكن لا قلبي لا ليس مثل هذا .أنه مثل ما تراه في جميع مكتبات ++C القياسية.

خبير مدير وسام البهنسي مشاركة 12

في 12/رمضان/1430 11:14 ص، عقد علي محمد أسماعيل حاجبيه بتفكير وقال:

اذا كنت تستخدم VisualStudio قم بكتابة اسم الدالة sprintf ثم قم بتعليم النص ثم أضغط على زر الفأرة اليمين ومن القائمة أختر Go To Definition.
وسيفتح لك مكان وجود الدالة sprintf وقد كان الملف المعرفة به هو stdio.h

الكود في stdio.h هو ليس كود عمل الإجراء، وإنما فقط الإعلان عن الإجراء (function declaration). تستطيع الاستمتاع برؤية كود عمل الإجراء في الملف:
 
C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\sprintf.c
 
(يجب أن تكون قد طلبت تثبيت ملفات CRT Source Code عند تثبيت Visual Studio على جهازك، وإلا لن تجد الملف)
 
حظاً سعيداً

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

مفصول علي محمد أسماعيل  مشاركة 13

وفي 01 أيلول 2009 08:58 م، قال وسام البهنسي متحمساً:

الكود في stdio.h هو ليس كود عمل الإجراء، وإنما فقط الإعلان عن الإجراء (function declaration).

لماذا تم كتابة الدالة في ملف والاعلان عنها في ملف اخر؟هل لأن ملف الدالة يحتوي على عدد اسطر كبيرة بحيث لا يريد Bjrane زيادة حجم الملف stdio او ربما لأمور تنظيمية فقط.
ارجوا اعلامنا
وشكرا

محترف  انس مشاركة 14

وفي 01 سبتمبر 2009 04:14 م، ظهر شبح ابتسامة على وجه علي محمد أسماعيل وهو يقول:

ان هذا الكود مفهوم بالنسبة لي لكن لا قلبي لا ليس مثل هذا .أنه مثل ما تراه في جميع مكتبات ++C القياسية.
اتقصد مثل هذا ؟ :

#ifndef _GLIBCXX_IOSTREAM
#define _GLIBCXX_IOSTREAM 1

#pragma GCC system_header

#include 
#include 
#include 

namespace std 
{
  /**
   *  @name Standard Stream Objects
   *
   *  The <iostream> header declares the eight standard stream
   *  objects.  For other declarations, see
   *  http://gcc.gnu.org/onlinedocs/libstdc++/27_io/howto.html#10 and the
   *  @link s27_2_iosfwd I/O forward declarations @endlink
   *
   *  They are required by default to cooperate with the global C library's
   *  @c FILE streams, and to be available during program startup and
   *  termination.  For more information, see the HOWTO linked to above.
  */
  //@{
  extern istream cin;		///< Linked to standard input
  extern ostream cout;		///< Linked to standard output
  extern ostream cerr;		///< Linked to standard error (unbuffered)
  extern ostream clog;		///< Linked to standard error (buffered)

#ifdef _GLIBCXX_USE_WCHAR_T
  extern wistream wcin;		///< Linked to standard input
  extern wostream wcout;	///< Linked to standard output
  extern wostream wcerr;	///< Linked to standard error (unbuffered)
  extern wostream wclog;	///< Linked to standard error (buffered)
#endif
  //@}

  // For construction of filebuffers for cout, cin, cerr, clog et. al.
  static ios_base::Init __ioinit;
} // namespace std

#endif /* _GLIBCXX_IOSTREAM */
انه الكود الموجود في iostream .
اما عن مكتبة الـ C  فحسب علمي تمت عمل  Compile لها.

أما في 01 سبتمبر 2009 05:58 م، فقد تنهد وسام البهنسي بارتياح وهو يرد:

تستطيع الاستمتاع برؤية كود عمل الإجراء في الملف: C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\sprintf.c
من فضلك استاذ وسام هل من الممكن الاطلاع على الكود في بيئة تطوير اخرى ؟

شكرا

مفصول علي محمد أسماعيل  مشاركة 15

في 01 أيلول 2009 09:41 م، غمغم انس باستغراب قائلاً:

اتقصد مثل هذا ؟ :

اجل فهذه الكود مربك بالنسبة لي.قد يكون سهلا لكن اسلوب الكتابة مربكا.




بتاريخ 01 أيلول 2009 09:41 م، قطب انس حاجبيه بشدة وهو يقول:

اما عن مكتبة الـ C  فحسب علمي تمت عمل  Compile لها.

لغة سي مفتوحة المصدر بالكامل.والدليل انك لا تضع اي ملف من الامتداد dll أو اي شيء اخر عند كتابتك بلغة سي مع العلم انك يمكنك ذلك.فلا مكتبات مترجمة ولا اي شيء اخر غير ملفات h. .



وفي 01 أيلول 2009 09:41 م، أعرب انس عن رأيه بالموقف كالآتي:

من فضلك استاذ وسام هل من الممكن الاطلاع على الكود في بيئة تطوير اخرى ؟
يمكنك ذلك في بيئة ++BORLAND C أن كنت تطلب بيئة اخرى على حد علمي.

محترف مشرف عبد اللطيف حاجي علي مشاركة 16

في 01 أيلول 2009 08:21 م، قال علي محمد أسماعيل بهدوء وتؤدة:

لماذا تم كتابة الدالة في ملف والاعلان عنها في ملف اخر؟

حتى تستطيع ضم الملف في أكثر من ملف دون أخطاء من الـ linker (لأنه سيكون لديك أكثر من تعريف لنفس الإجراء)
لتصغير حجم الملف التنفيذي الناتج حي تستخدم جميع البرامج نسخة واحدة من المكتبات الديناميكية متوفرة في معظم الأجهزة
لحماية المصدر في حال كونه مغلقاً


في 01 أيلول 2009 08:53 م، عقد علي محمد أسماعيل حاجبيه بتفكير وقال:

لغة سي مفتوحة المصدر بالكامل

قل هذا لشركة Dinkumware


وفي 01 أيلول 2009 08:53 م، قال علي محمد أسماعيل متحمساً:

والدليل انك لا تضع اي ملف من الامتداد dll أو اي شيء اخر عند كتابتك بلغة سي مع العلم انك يمكنك ذلك
جميع المكتبات المطلوبة متوفرة في معظم أنظمة تشغيل Windows ويتم تنصيبها عند تنصيب Visual Studio أيضاً. لمزيد من المعلومات ابحث عن "CRT Redistributable"
أيضاً يمكنك ضم المكتبات مترجمة إلى برنامجك حتى لا تحتاج إلى ملفات DLL عن طريق الـ static linking

عبد اللطيف حاجي علي
مبرمج
In|Framez

مفصول علي محمد أسماعيل  مشاركة 17

وفي 01 أيلول 2009 10:37 م، قال عبد اللطيف حاجي علي متحمساً:

قل هذا لشركة Dinkumware

انا سمعت ان لغة ++C مفتوحة المصدر .فكيف تبنى لغة مفتوحة المصدر على اخرى مغلقة؟
وشكرا على الرد

خبير مدير وسام البهنسي مشاركة 18

أما في 12/رمضان/1430 02:43 م، فقد تنهد علي محمد أسماعيل بارتياح وهو يرد:

انا سمعت ان لغة ++C مفتوحة المصدر .فكيف تبنى لغة مفتوحة المصدر على اخرى مغلقة؟

اللغة هي مجرد مواصفات مفتوحة لمن يريد أن يبني لها مُجمِّـعاً (compiler). المجمِّع (compiler) المفتوح المصدر الذي أعرفه هو GCC (قد يكون هذا هو مصدر ارتباكك). أما مجمِّع شركة Microsoft فليس مفتوح المصدر.
 
 

في 12/رمضان/1430 01:41 م، غمغم انس باستغراب قائلاً:

من فضلك استاذ وسام هل من الممكن الاطلاع على الكود في بيئة تطوير اخرى ؟

بالتأكيد الكود متوفر ضمن مشروع مكتبات CRT في GCC. سأحاول أن أجد لك تعريف الإجراء في تلك الملفات إن استطعت، لكن كي أضعك في الصورة: لا تتوقع منظراً بهيجاً للكود ☺

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

محترف  انس مشاركة 19

في 01 سبتمبر 2009 06:53 م، غمغم علي محمد أسماعيل باستغراب قائلاً:

والدليل انك لا تضع اي ملف من الامتداد dll أو اي شيء اخر عند كتابتك بلغة سي مع العلم انك يمكنك ذلك.فلا مكتبات مترجمة ولا اي شيء اخر غير ملفات h

ان ملفات الـ Headers لا تحتوي على الكود الاساسي بل مجرد تعريفات،و التعريفات هذه ليس لها معنى اذا لم يكن هناك الكود الاصلي.
لنفرض انني اعطيتك ملف Header يحتوي على دوال انا كاتبها فهل من المكن لك استعمال هذه الدوال ؟

اما بانسبة الى الـ DLL فهناك مكتبة الـ SDL اين يمكن وضع DLL مع انها مكتبة مفتوحة المصدر ؟

اذا كانت السي مفتوحة المصدر فهذا يعني انك تملك الكود الخاص بها و بمترجماتها، هل تملك مثل هذا ؟



بتاريخ 01 سبتمبر 2009 07:43 م، قطب علي محمد أسماعيل حاجبيه بشدة وهو يقول:

انا سمعت ان لغة ++C مفتوحة المصدر .فكيف تبنى لغة مفتوحة المصدر على اخرى مغلقة؟

و اين سمعت هذا من فضلك ؟



وفي 01 سبتمبر 2009 08:24 م، أعرب وسام البهنسي عن رأيه بالموقف كالآتي:

بالتأكيد الكود متوفر ضمن مشروع مكتبات CRT في GCC. سأحاول أن أجد لك تعريف الإجراء في تلك الملفات إن استطعت، لكن كي أضعك في الصورة: لا تتوقع منظراً بهيجاً للكود
شكرا جزيلا استاذ وسام. لا تهتم لقد صارعت مع ابشع ثور الكود الموجودة ☺

مفصول علي محمد أسماعيل  مشاركة 20

وفي 01 أيلول 2009 11:34 م، أعرب انس عن رأيه بالموقف كالآتي:

لنفرض انني اعطيتك ملف Header يحتوي على دوال انا كاتبها فهل من المكن لك استعمال هذه الدوال ؟
ذلك يعتمد على ما تكتبه في ملفك فقد يكون مجرد تعريف وليس implement لدوال لكن ان كتبت الدالة كاملة اكيد سأقدر على استخدامها..

في 01 أيلول 2009 11:34 م، قال انس بهدوء وتؤدة:

اذا كانت السي مفتوحة المصدر فهذا يعني انك تملك الكود الخاص بها و بمترجماتها، هل تملك مثل هذا ؟

ليس لدي لكن ابحث.لكن ان كنت تبحث عن لغة مفتوحة المصدر للأطلاع على الكود هذه لغة Lua  وهي  مكتوبة بلغة C .
www.lua.org


في 01 أيلول 2009 11:34 م، عقد انس حاجبيه بتفكير وقال:

و اين سمعت هذا من فضلك ؟
لو كانت اللغة مغلقة لما كان هناك اكثر من مجمع للغة.