C'de Typedef ve Struct Tanımlamaları Hakkında Bir Soru

Başlatan osman_, 04 Temmuz 2019, 10:45:50

osman_

struct myStruct{
    int one;
    int two;
};

typedef struct{
    int one;
    int two;
}myStruct;

Bu iki tanım arasında ne tür bir fark oluyor? MCU kütüphanelerinde genelde typedef ile oluşturulan struct yapılarını gördüm. Neden typedef tercih ediliyor?

fide

Ikinci tanım yapıldıktan sonra tanım int, char gibi bir veri tipi haline gelir. Bu sayede
myStruct arr1;
myStruct arr2;
tanımlayabilirsiniz.


Aşağıdaki linkte bu konuyla ilgili tanımlar var.
https://www.picproje.org/index.php?topic=71706.0
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

kantirici

typedef ile yeni tür tanımlanıyor, int char gibi.

typedef ile tanımlarsan "myStruct i;" ile myStruct türünden bir değişken oluşturursun.
Diğerinde ise "struct myStruct i;" şeklinde tanımlaman gerekir.
typedef ile tanımlamak hem daha az yazım yapmana hemde daha anlaşılır kod yazmayı sağlar.

Bunun haricinde bir fark yok. Ayrıca typedef sadece struct tanımlarken değil, yeni bir tür tanımlamak için kullanılır.

Mesela sen ahmet adında 8 bitlik bir değişken türü tanımlamak istersen "typedef uint8_t ahmet;" tanımı ile "ahmet i;" şeklinde değişken tanımı yapabilirsin.