আমি স্ট্রকের একটি অ্যারে তৈরি করার চেষ্টা করছি যেখানে প্রতিটি স্ট্রাক্ট আকাশের দেহের প্রতিনিধিত্ব করে।
স্ট্রাইক নিয়ে আমার তেমন অভিজ্ঞতা নেই, এ কারণেই আমি সিদ্ধান্ত নিয়েছি যে পুরো গুচ্ছ অ্যারেগুলির পরিবর্তে সেগুলি ব্যবহার করার চেষ্টা করব। যাইহোক, আমি বিভিন্ন বিভিন্ন ত্রুটি মধ্যে চালিয়ে যান। আমি বিভিন্ন থ্রেডে এবং স্ট্যাকওভারফ্লোতে যে কৌশলগুলি দেখেছি সেগুলি বাস্তবায়নের চেষ্টা করেছি (যেমন সি এবং সি তে স্ট্রাইকগুলির অ্যারে - স্ট্রাক্টের অ্যারে আরম্ভ করা ) তবে সেগুলি সমস্ত প্রযোজ্য ছিল না।
যারা এ পর্যন্ত পড়েছেন তাদের জন্য আরও তথ্য: গতিশীল হওয়ার জন্য আমার এগুলির কোনও প্রয়োজন নেই, আমি আগে থেকেই সমস্ত কিছুর আকার জানি / সংজ্ঞায়িত করি। আমি এটির একটি বৈশ্বিক অ্যারে হওয়ারও প্রয়োজন কারণ আমি এটি বিভিন্ন ধরণের সংজ্ঞায়িত যুক্তি (যেমন GLUT পদ্ধতি) দ্বারা অ্যাক্সেস করছি।
এইভাবে আমি আমার শিরোনামে স্ট্রাক্টটি সংজ্ঞায়িত করছি:
struct body
{
double p[3];//position
double v[3];//velocity
double a[3];//acceleration
double radius;
double mass;
};
স্ট্রাক্টটির অভ্যন্তরটি সংজ্ঞায়নের আগে আমার কাছে অন্যান্য বৈশ্বিক পরিবর্তনশীলগুলির একটি তালিকা রয়েছে যা আমি সংজ্ঞায়িত করছি এবং এর মধ্যে একটি হ'ল এই কাঠামোর অ্যারে (মূলত, যদি আমি আমার ফোগড স্পিকের ক্ষেত্রে খুব অস্পষ্ট হয়ে থাকি তবে নীচের লাইনটি উপরের স্টাফের উপরে):
struct body bodies[n];
ঠিক তাই আপনি জানেন, n
এমন কিছু যা আমি বৈধভাবে সংজ্ঞায়িত করেছি (যেমন #define n 1
)।
আমি এই অ্যারেটিকে বিভিন্ন বিভিন্ন পদ্ধতিতে ব্যবহার করি তবে সবচেয়ে সহজ এবং কমপক্ষে স্থান গ্রহণ করা আমার মূলটির একটি সরলিকৃত রূপ is এখানে আমি প্রতিটি স্ট্রাক্টের সমস্ত ভেরিয়েবলের সূচনা করি, কিছু উপায়ে পরিবর্তন করার আগে কেবল নির্দিষ্টর জন্য ভেরিয়েবলগুলি সেট করতে:
int a, b;
for(a = 0; a < n; a++)
{
for(b = 0; b < 3; b++)
{
bodies[a].p[b] = 0;
bodies[a].v[b] = 0;
bodies[a].a[b] = 0;
}
bodies[a].mass = 0;
bodies[a].radius = 1.0;
}
বর্তমান ত্রুটিটি যেটির মুখোমুখি হচ্ছি তা হ'ল nbody.c:32:13: error: array type has incomplete element type
লাইন ৩২ যেখানে আমি স্ট্রাক্টগুলির অ্যারে তৈরি করছি।
একটি শেষ স্পষ্টতা, শিরোনাম দ্বারা আমি উপরের স্থানটি বলতে int main(void)
চাই তবে একই *.c
ফাইলটিতে।
struct body bodies[n];
আগেstruct body {}
ঘোষণা দিচ্ছেন না?