คำถามติดแท็ก typedef

ใน C และ C ++ คีย์เวิร์ด typedef ช่วยให้คุณสร้างนามแฝงสำหรับชนิดข้อมูลที่รู้จัก

13
enum typedef ใน Objective-C คืออะไร?
ฉันไม่คิดว่าฉันเข้าใจในสิ่งที่เป็นenumอยู่และควรใช้เมื่อใด ตัวอย่างเช่น: typedef enum { kCircle, kRectangle, kOblateSpheroid } ShapeType; มีการประกาศอะไรที่นี่จริง ๆ ?

7
อะไรคือความแตกต่างระหว่าง 'typedef' และ 'using' ใน C ++ 11?
ฉันรู้ว่าใน C ++ 11 ตอนนี้เราสามารถใช้usingเพื่อเขียนนามแฝงประเภทเช่นtypedefs: typedef int MyInt; คือจากสิ่งที่ฉันเข้าใจเทียบเท่ากับ: using MyInt = int; และไวยากรณ์ใหม่นั้นเกิดขึ้นจากความพยายามที่จะมีวิธีในการแสดงออก " template typedef": template< class T > using MyType = AnotherType< T, MyAllocatorType >; แต่ด้วยสองตัวอย่างแรกที่ไม่ใช่แม่แบบมีความแตกต่างเล็กน้อยอื่น ๆ ในมาตรฐานหรือไม่ ตัวอย่างเช่นใช้typedefนามแฝงด้วยวิธี "อ่อนแอ" นั่นคือมันไม่ได้สร้างประเภทใหม่ แต่มีเพียงชื่อใหม่เท่านั้น (การแปลงนั้นมีนัยยะระหว่างชื่อเหล่านั้น) มันเหมือนกันกับusingหรือสร้างชนิดใหม่หรือไม่ มีความแตกต่างหรือไม่?


6
ตัวชี้ฟังก์ชั่น Typedef?
Наэтотвопросестьответына กองมากเกินнарусском : Какработает typedef вэтомкоде? ฉันเรียนรู้วิธีโหลด DLL แบบไดนามิก แต่สิ่งที่ฉันไม่เข้าใจคือบรรทัดนี้ typedef void (*FunctionFunc)(); ฉันมีคำถามสองสามข้อ หากมีใครสามารถตอบคำถามเหล่านี้ได้ฉันก็จะขอบคุณ ทำไมต้องtypedefใช้? ไวยากรณ์ดูแปลก หลังจากนั้นvoidควรจะไม่มีชื่อฟังก์ชั่นหรืออะไร? ดูเหมือนว่าฟังก์ชั่นที่ไม่ระบุชื่อ ตัวชี้ฟังก์ชั่นถูกสร้างขึ้นเพื่อเก็บที่อยู่หน่วยความจำของฟังก์ชั่นหรือไม่? ดังนั้นฉันสับสนในขณะนี้ คุณช่วยอธิบายสิ่งต่าง ๆ ให้ฉันได้ไหม
458 c++  c  pointers  typedef 

15
ทำไมเราควรพิมพ์ struct บ่อยครั้งใน C?
ฉันได้เห็นหลายโปรแกรมที่ประกอบด้วยโครงสร้างเช่นเดียวกับด้านล่าง typedef struct { int i; char k; } elem; elem user; ทำไมมันจำเป็นบ่อยครั้ง เหตุผลเฉพาะหรือพื้นที่ที่บังคับใช้?
406 c  struct  typedef 

1
เทมเพลต C ++ เทมเพลต
ฉันมีเรียน template<size_t N, size_t M> class Matrix { // .... }; ฉันต้องการสร้าง a typedefซึ่งสร้างVector(เวกเตอร์คอลัมน์) ซึ่งเทียบเท่ากับ a Matrixขนาด N และ 1 สิ่งที่ต้องการ: typedef Matrix<N,1> Vector<N>; ซึ่งก่อให้เกิดข้อผิดพลาดในการรวบรวม ต่อไปนี้สร้างสิ่งที่คล้ายกัน แต่ไม่ใช่สิ่งที่ฉันต้องการ: template <size_t N> class Vector: public Matrix<N,1> { }; มีวิธีแก้ปัญหาหรือวิธีแก้ปัญหา / แนวทางปฏิบัติที่ไม่แพงเกินไปหรือไม่?
368 c++  templates  c++11  typedef 

10
เทียบเท่าของ typedef ใน C #
มีการพิมพ์ typedef ใน C # หรือบางครั้งเพื่อให้ได้ลักษณะคล้ายกัน? ฉันทำ Google เสร็จแล้ว แต่ดูเหมือนว่าทุกที่ฉันจะลบ ขณะนี้ฉันมีสถานการณ์คล้ายกับต่อไปนี้: class GenericClass<T> { public event EventHandler<EventData> MyEvent; public class EventData : EventArgs { /* snip */ } // ... snip } ตอนนี้มันไม่ได้ใช้นักวิทยาศาสตร์จรวดที่จะเข้าใจว่าสิ่งนี้สามารถนำไปสู่การพิมพ์จำนวนมากได้อย่างรวดเร็ว (ขอโทษสำหรับปุนน่ากลัว) เมื่อพยายามที่จะดำเนินการจัดการสำหรับเหตุการณ์ที่ มันจะกลายเป็นแบบนี้: GenericClass<int> gcInt = new GenericClass<int>; gcInt.MyEvent += new EventHandler<GenericClass<int>.EventData>(gcInt_MyEvent); // ... private void gcInt_MyEvent(object …
326 c#  typedef 

12
มี Java หรือวิธีการเทียบเท่าสำหรับคำหลัก typedef ใน C ++ หรือไม่
มาจากพื้นหลัง C และ C ++ ฉันพบว่าการใช้ประโยชน์อย่างรอบคอบนั้นtypedefมีประโยชน์อย่างไม่น่าเชื่อ คุณรู้วิธีที่จะใช้ฟังก์ชันการทำงานที่คล้ายกันใน Java ไม่ว่าจะเป็นกลไก Java, รูปแบบ, หรือวิธีที่มีประสิทธิภาพอื่น ๆ ที่คุณใช้?
244 java  c++  c  design-patterns  typedef 

7
ทำความเข้าใจกับ typedefs สำหรับพอยน์เตอร์ของฟังก์ชันใน C
ฉันมักจะนิ่งงันอยู่เสมอเมื่อฉันอ่านรหัสของคนอื่นซึ่งมี typedefs สำหรับตัวชี้ไปยังฟังก์ชันที่มีอาร์กิวเมนต์ ฉันจำได้ว่ามันต้องใช้เวลาสักพักกว่าจะได้คำนิยามดังกล่าวในขณะที่พยายามทำความเข้าใจกับอัลกอริธึมเชิงตัวเลขที่เขียนด้วย C เมื่อไม่นานมานี้ ดังนั้นคุณสามารถแบ่งปันเคล็ดลับและความคิดของคุณเกี่ยวกับวิธีเขียน typedefs ที่ดีสำหรับตัวชี้ไปยังฟังก์ชัน (Do's and Do's Do) ทำไมพวกเขาถึงมีประโยชน์และทำความเข้าใจงานของผู้อื่นได้อย่างไร ขอบคุณ!


8
uint8_t กับถ่านที่ไม่ได้ลงชื่อ
อะไรคือข้อได้เปรียบของการใช้uint8_tเกินunsigned charใน C? ฉันรู้ว่าในเกือบทุกระบบuint8_tเป็นเพียง typedef unsigned charแล้วทำไมต้องใช้มันล่ะ
231 c  typedef 

6
typedef array ความยาวคงที่
ฉันต้องกำหนดประเภทข้อมูล 24 บิตฉันใช้char[3]เพื่อแสดงประเภท ฉันสามารถ typedef char[3]เพื่อtype24? ฉันลองในตัวอย่างรหัส ฉันใส่typedef char[3] type24;ไฟล์ส่วนหัว คอมไพเลอร์ไม่ได้บ่นเกี่ยวกับมัน แต่เมื่อฉันกำหนดฟังก์ชั่นvoid foo(type24 val) {}ในไฟล์ C ของฉันมันก็บ่น ฉันต้องการที่จะสามารถที่จะกำหนดฟังก์ชั่นเช่นแทนtype24_to_int32(type24 val)type24_to_int32(char value[3])
210 c  arrays  gcc  typedef 

9
ทำไมคุณใช้ typedef เมื่อประกาศ enum ใน C ++
ฉันยังไม่ได้เขียน C ++ ในเวลาหลายปีและตอนนี้ฉันกำลังพยายามกลับเข้าไป จากนั้นฉันก็วิ่งข้ามสิ่งนี้และคิดเกี่ยวกับการยอมแพ้: typedef enum TokenType { blah1 = 0x00000000, blah2 = 0X01000000, blah3 = 0X02000000 } TokenType; นี่คืออะไร? เหตุใดจึงtypedefใช้คำหลักที่นี่ เหตุใดชื่อจึงTokenTypeปรากฏขึ้นสองครั้งในการประกาศนี้ ความหมายต่างจากนี้อย่างไร enum TokenType { blah1 = 0x00000000, blah2=0x01000000, blah3=0x02000000 };
183 c++  enums  typedef 

9
typedefs ภายในใน C ++ - สไตล์ดีหรือสไตล์แย่?
บางสิ่งที่ฉันพบว่าตัวเองกำลังทำอยู่บ่อยครั้งเมื่อเร็ว ๆ นี้ได้ประกาศแนวความคิดที่เกี่ยวข้องกับชั้นเรียนเฉพาะภายในชั้นเรียนนั้นเช่น class Lorem { typedef boost::shared_ptr<Lorem> ptr; typedef std::vector<Lorem::ptr> vector; // // ... // }; ประเภทเหล่านี้จะถูกใช้ที่อื่นในรหัส: Lorem::vector lorems; Lorem::ptr lorem( new Lorem() ); lorems.push_back( lorem ); เหตุผลที่ฉันชอบ: มันช่วยลดเสียงรบกวนที่นำโดยแม่ชั้นstd::vector<Lorem>จะกลายLorem::vectorเป็นต้น มันทำหน้าที่เป็นคำสั่งของเจตนา - ในตัวอย่างข้างต้นคลาส Lorem มีจุดประสงค์ที่จะอ้างอิงนับผ่านboost::shared_ptrและเก็บไว้ในเวกเตอร์ จะช่วยให้การดำเนินการเปลี่ยนแปลง - เช่นถ้า Lorem จำเป็นต้องเปลี่ยนเป็นการอ้างอิงอย่างคร่าวๆนับ (ผ่านboost::intrusive_ptr) ในระยะต่อมานี่จะมีผลกระทบน้อยที่สุดกับรหัส ฉันคิดว่ามันดูดีกว่าและอ่านง่ายกว่า เหตุผลที่ฉันไม่ชอบ: บางครั้งมีปัญหาเกี่ยวกับการพึ่งพา - หากคุณต้องการฝังพูดLorem::vectorในคลาสอื่น แต่ต้องการเพียง (หรือต้องการ) เพื่อส่งต่อประกาศ …


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.