الكلمات الرئيسية خارجية والرموز الخارجية التي لم تحل

StackOverflow https://stackoverflow.com/questions/395060

  •  23-08-2019
  •  | 
  •  

سؤال

لفت الرسم البياني قليلا في الطلاء الذي يفسر مشكلتي:

لكن لا يبدو أنه يظهر عندما أستخدم <img> العلامة بعد النشر؟

رسم بياني:

http://i44.tinypic.com/103gcbk.jpg

هل كانت مفيدة؟

المحلول

تحتاج إلى إنشاء قاعدة البيانات خارج الرئيسية ()، وإلا فسوف تعلن فقط التظليل المتغير المحلي

gameserver.cpp:

#include GameSocket.h
Database db(1, 2, 3);
int main() {
   //whatever
}

نصائح أخرى

المشكلة هي نطاق إعلان DB. الرمز:

extern Database db;

يعني حقا "ديسيبل أعلن على مستوى العالم في مكان ما, ، ليس فقط هنا ". لا يمضي الرمز بعد ذلك ويعلن في الواقع على مستوى العالم، ولكن داخل المحلي الرئيسية ()، وهو غير مرئي خارج الرئيسي (). يجب أن تبدو الكود هكذا، من أجل حل مشكلة الربط الخاص بك في

file1.c.

Database db;
int main ()
{
  ...
}

file2.c.

extern Database db;
void some_function ()
{
  ...
}

يتم تطبيق الجزء الخارجي على جميع ملفات CPP (والنتيجة OBJ)، لذلك لا يوجد أحد منهم بالفعل إنشاء DB.

إليك طريقة واحدة حول هذا. في قاعدة البيانات، تغيير extern Database db ل:

#ifdef INSTANTIATE_DB
Database db;
#else
extern Database db;
#endif

ثم في واحدة من ملفات CPP الخاصة بك (قاعدة البيانات.cpp سيكون جيدا، إذا كان لديك واحدة) إضافة #define INSTANTIATE_DB قبل #include "Database.h".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top