मैंने कई स्थानों पर पढ़ा है कि एक सी संरचना सुरक्षित रूप से कई बार परिभाषित की जा सकती है, और फिर भी मुझे एक संरचना को परिभाषित करने के लिए जीसीसी से "संरचना का पुनर्वितरण" त्रुटि मिलती है (एकाधिक शामिलियों के माध्यम से)। एक बहुत ही सरल उदाहरण इस प्रकार है:क्या सी सी संरचना को कई बार परिभाषित किया जा सकता है?
foo.c:
#include "a.h"
#include "b.h"
int main(int argc, char *argv[]) {
struct bar b;
b.a = 2;
return 0;
}
आह:
struct bar {
int a;
int b;
};
bh:
#include "a.h"
struct buz {
int x;
int y;
};
अगर मैं gcc foo.c
चलाने मैं:
In file included from b.h:1:0,
from foo.c:2:
a.h:1:8: error: redefinition of ‘struct bar’
a.h:1:8: note: originally defined here
मुझे पता है कि मैंने कोई भी गार्ड शामिल नहीं किया है और वे संकलन त्रुटि को ठीक करेंगे, लेकिन मेरी समझ यह थी कि यह फिर भी काम करना चाहिए। मैंने foo.c में दो struct bar
परिभाषाओं की भी कोशिश की और मुझे एक ही त्रुटि संदेश मिलता है? तो, क्या structs को सी में पारस्परिक समय परिभाषित किया जा सकता है या नहीं?
बहुत सही उदाहरण, और ओपी के लिए अच्छा उदाहरण :) – Lefteris
हाँ, मूल रूप से सी में हर चीज़ को कई बार घोषित किया जा सकता है लेकिन एक बार परिभाषित किया जा सकता है। –
ठीक है, मुझे लगता है कि चीज़ों को साफ़ करता है। धन्यवाद। – Elektito