मैं एक ऐसी संरचना बनाने की कोशिश कर रहा हूँ जहाँ प्रत्येक संरचना एक खगोलीय पिंड का प्रतिनिधित्व करती है।
मेरे पास स्ट्रक्चर्स के साथ उतना अनुभव नहीं है, यही कारण है कि मैंने सरणियों के एक पूरे समूह के बजाय उनका उपयोग करने का प्रयास करने का निर्णय लिया। हालाँकि, मैं कई अलग-अलग त्रुटियों में भागता रहता हूँ। मैंने उन तकनीकों को लागू करने की कोशिश की है, जो मैंने विभिन्न थ्रेड्स और स्टैकऑवरफ़्लो पर देखी हैं (जैसे कि सी और सी में स्ट्रक्चर्स का एरे - स्ट्रक्चर्स का एरेलाइज़ सरणी ), हालाँकि ये सभी लागू नहीं थे।
उन लोगों के लिए आगे की जानकारी जिन्होंने इसे पढ़ा है: मुझे गतिशील होने के लिए किसी की आवश्यकता नहीं है, मैं पहले से ही सब कुछ के आकार को जानता / परिभाषित करता हूं। मुझे एक वैश्विक सरणी के रूप में भी इसकी आवश्यकता है क्योंकि मैं इसे कई अलग-अलग तरीकों से एक्सेस कर रहा हूं, जिन्होंने तर्कों को परिभाषित किया है (यानी 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
)।
मैं इस सरणी को कई अलग-अलग तरीकों से उपयोग करता हूं, लेकिन सबसे आसान और कम से कम एक स्थान का उपभोग करना मेरे मुख्य का एक सरल रूप है। यहाँ मैं प्रत्येक चर में सभी चर को आरंभीकृत करता हूं, बस चर को कुछ में बदलने से पहले निश्चित करने के लिए:
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
जहां लाइन 32 वह जगह है जहां मैं स्ट्रक्चर्स की सरणी बना रहा हूं।
एक अंतिम स्पष्टीकरण, हेडर से मेरा मतलब है ऊपर की जगह int main(void)
लेकिन उसी *.c
फ़ाइल में।
struct body bodies[n];
से पहलेstruct body {}
घोषणा नहीं कर रहे हैं ?