2010-08-21 11 views
13

जीसीसी typedef'ing के लिए 4.4.4 C89स्टैंडर्ड

मैं बस सोच रहा हूँ किसी भी मानक है कि जब प्रकार के निर्माण का पालन किया जाना चाहिए।

उदाहरण के लिए

:

typedef struct date 
{ 
} Date; 

या चर

typedef unsigned int Age; 

के लिए या इस

typedef unsigned int age_t; 
:

typedef struct date 
{ 
} date_t; 

मैं भी देखा है लोगों को इस तरह की एक पूंजी डाल

क्या कोई मानक है जिसका पालन किया जाना चाहिए। व्यक्तिगत रूप से मैं एक _t के साथ पोस्ट फिक्सिंग पसंद करते हैं।

किसी भी सुझाव के लिए बहुत धन्यवाद,

+2

मुझे लगता है कि अधिक परंपरागत शब्दावली 'मानक' के बजाय 'सम्मेलन' है। अच्छा प्रश्न। मुझे लगता है कि एक के लिए openssl प्रोजेक्ट typedef struct objname_st {...} objname के सम्मेलन का उपयोग करता है। –

उत्तर

5

इनमें से अधिकतर व्यक्तिगत वरीयता के लिए नीचे आता है, जिसमें महत्वपूर्ण होना महत्वपूर्ण है (या यदि आपके पास कंपनी का सम्मेलन है, तो इसका उपयोग करें)।

http://www.montefiore.ulg.ac.be/~piater/Cours/Coding-Style/

ध्यान दें कि यह _t 'भाग स्विच: निम्न आलेख कुछ नामकरण गाइड है

typedef struct node_t { 
    void *content; 
    struct node_t *next; 
} Node; 

typedef enum season_t { SPRING, SUMMER, FALL, WINTER } Season; 

वहाँ सी नामकरण सम्मेलनों यहाँ पर एक पहले चर्चा नहीं हुई:

What are the most common naming conventions in C?

+0

क्या नोड को टैग नाम के रूप में और node_t प्रकार के रूप में बेहतर नहीं होगा? धन्यवाद। – ant2009

+4

यह देखते हुए कि '_t' POSIX के लिए आरक्षित है, मैं सुझाव दूंगा कि '_t' का उपयोग न करें और एक नामकरण सम्मेलन के साथ आना जो आपको समझ में आता है (उदाहरण के लिए, @ कैसाब्लांका का जवाब देखें)। मैंने केवल लेख से उद्धृत किया है, जो केवल एक राय है। –

4

शैली मैं दृढ़ता से आप बस का उपयोग करने के लिए जो भी आप की तरह, या जो कुछ भी सम्मेलनों अपने संगठन में उपयोग किया जाता है से आग्रह करता हूं एक बहुत ही व्यक्तिगत और बहुत ही व्यक्तिपरक बात है,।

+10

लेकिन, सम्मेलन अनुभव के आधार पर विकसित होते हैं। उस अनुभव का लाभ उठाने का प्रयास क्यों नहीं करें? –

3

अपने प्रोजेक्ट के लिए बाकी लोग क्या करते हैं इसका पालन करें ताकि सबकुछ सुसंगत रहे। अन्यथा वे दोनों तकनीकी रूप से स्वीकार्य हैं।

27

यदि आप पॉज़िक्स मानकों का पालन करने वाले प्लेटफ़ॉर्म पर काम कर रहे हैं तो आपको अवगत होना चाहिए कि _t में समाप्त होने वाले किसी भी पहचानकर्ता को POSIX परिभाषित प्रकारों के लिए आरक्षित किया गया है, इसलिए सलाह दी जाती है कि आप अपने स्वयं के प्रकार के लिए समान सम्मेलन का पालन न करें।

3

मुझे नहीं लगता कि कोई "मानक" नामकरण सम्मेलन है। वास्तव में, वे परियोजनाओं (और सी ++ या जावा जैसी अन्य भाषाओं के बीच) के बीच इतनी जंगली रूप से भिन्न होते हैं कि मैंने व्यक्तिगत रूप से सभी भाषाओं में ऊंट का अपनाया है।

मैं हमेशा typedef के माध्यम से अपनी संरचनाओं को परिभाषित करता हूं, इसलिए मैं जो कुछ भी नाम देता हूं उसका उपयोग करता हूं अन्यथा (यह भी Win32 एपीआई करता है)। मामले में मैं एक स्वयं को संदर्भित संरचना की जरूरत है, मैं कच्चे struct के नाम के एक _ उपसर्ग:

typedef struct _Node { 
    _Node *next; 
} Node; 
+0

कुछ कारणों से सी # और .NET सम्मेलन विधि और फ़ील्ड नामों के पहले अक्षर को पूंजीकृत करता प्रतीत होता है। –

+6

एक अग्रणी अंडरस्कोर के साथ नाम पूंजी पत्र या अन्य अंडरस्कोर के बाद आरक्षित हैं। (लोअरकेस अक्षर के बाद एक अग्रणी अंडरस्कोर के नाम के नाम को दायरे के आधार पर आरक्षित किया जा सकता है; केवल प्रमुख अंडरस्कोर से बचने में आसान।) Http://stackoverflow.com/questions/228783/what-are-the-rules-about-using -न-अंडरस्कोर-इन-एसी-पहचानकर्ता/228797 # 228797 – jamesdlin

1

सामान्य सबसे अधिक भाषाओं में गैर मानकीकृत वर्ग या प्रकार के लिए SentenceCase के उपयोग की अनुमति। मुझे लगता है कि यह सबसे अच्छा अभ्यास है, और भाषाओं में जो इसे अनुमति देता है, अतिरिक्त रूप से संघर्षों को रोकने के लिए नामस्थान या मॉड्यूल का उपयोग करें। ऐसी भाषाओं में जो नहीं (जैसे सी), एक उपसर्ग जहां आवश्यक कभी भटक नहीं जाता है।कुछ के लिए एक बहु भाषा उदाहरण का उपयोग करने के मैं वर्तमान पर काम कर रहा हूँ:

C: typedef uint32_t CpfsMode; 
C++: namespace Cpfs { typedef uint32_t Mode; } 
Python: cpfs.Mode = int 
7

तुम बस बस

typedef struct toto toto; 
  1. struct toto (टैग) और typedef नाम toto (पहचानकर्ता का उपयोग कर सकते) विभिन्न सी "नेमस्कोप" में हैं इसलिए वे संगत हैं, लेकिन वे अंत में उसी प्रकार को इंगित करते हैं।
  2. अतिरिक्त बोनस के रूप में यह सी ++ के साथ संगत है, जो आमतौर पर का अनुमान है कि typedef है।
  3. एक और बोनस के रूप में यह पर रोकता है एक चर toto घोषित करता है जो कई बार भ्रमित हो सकता है।
+0

मुझे खुशी है कि मैंने नीचे स्क्रॉल किया और मुझे इसके बारे में सीधे सोचने के लिए खुद को सामना करना पड़ा। – bzeaman

संबंधित मुद्दे