السلام عليكم
متى نستخدمtypedef l
وما عملها بالضبط
السلام عليكم
متى نستخدمtypedef l
وما عملها بالضبط
السلام عليكم اخوي طالب برمجة
انا اعتقد انه typedef ما داخل في امتحان الفاينل باجر ... فلا تصدع راسك فيه و ركز على اشياء ثانيه اهم ..
اخوك تيمون
إستخدام typedef يكون في إعادة تسمية كلمة محجوزة في اللغة مثل:
typedef int mode;
int main()
{
mode x;
}لاحظ إنك الآن تقدر تستخدم mode بدل int
وهذي ميزة من مميزات السي++ غير موجودة في بعض اللغات
طبعاً أنا استفدت منها في نقطة هي:
typedef int mode;
int main()
{
mode x;
mode r;
mode a;
mode t;
mode e;
mode q;
}لو أردت إني أغير متغيرات البرنامج كلها من int إلى float أو char بتكون مشكلة تتبع كل المتغيرات وتغيير نوعها واحد واحد وبأخسر الوقت طبعاً.
لكن بالـ typedef نغير فقط int إلى float بالتغيير التالي.
typedef float mode;
وتصير المتغيرات اللي عرفتها mode كلها من نوع float بخطوة واحدة!!!!!!!
مشكووووووووووووووور CompuM4n
ما تقصر ..
السلام عليكم ,,
بارك الله فيكم ,, اضافة بسيطة على الموضوع ,,
يمكن كتابة أكثرمن تخصيص لنوع البيانات التي نريدها مثلا :
typedef const int* My
الان My سيكون نوعها * const int ,, وهذه الطريقة تستخدم للنتغيرات الغريبة التي نجدها في برمجة الوندوز ,, مثلا توجد متغيرات من النوع LPVOID ,, هي في الاصل معرفة ك :
typedef void* LPVOID
تصحيح معلومة
typedef من مميزات السي كمان
تقدر تستخدمها في السي والسي ++
I will add that typdef is used mainly when declaring a tructure to create defined-data-type-like. and I use in my programs as follows:
typedef struct {
int number;
int length;
} inode;now you can refere to the struct as inode easily .. and if you are using classes you don't need to worry aout that.
تم تعديل هذه المشاركة بواسطة Mutix في 1 يناير 2004 في 12:39
Hello,
Here a sample code the give an error:
typedef char* toto;
class titi{
public:
void test(const char* t);
};
void titi::test(const toto t){
}
compiling with:
g++ -v test.cc
gives:
Reading specs from /usr/lib/gcc-lib/i386-linux/2.95.2/specs
gcc version 2.95.2 20000313 (Debian GNU/Linux)
/usr/lib/gcc-lib/i386-linux/2.95.2/cpp -lang-c++ -v -D__GNUC__=2 -D__GNUG__=2 -D__GNUC_MINOR__=95 -D__cplusplus -D__ELF__ -Dunix -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__linux__ -D__unix -D__linux -Asystem(posix) -D__EXCEPTIONS -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ test.cc /tmp/ccKm3xkV.ii
GNU CPP version 2.95.2 20000313 (Debian GNU/Linux) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3
/usr/lib/gcc-lib/i386-linux/2.95.2/include
/usr/include
End of search list.
The following default directories have been omitted from the search path:
/usr/local/include
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include
End of omitted list.
/usr/lib/gcc-lib/i386-linux/2.95.2/cc1plus /tmp/ccKm3xkV.ii -quiet -dumpbase test.cc -version -o /tmp/cckxLAwH.s
GNU C++ version 2.95.2 20000313 (Debian GNU/Linux) (i386-linux) compiled by GNU C version 2.95.2 20000313 (Debian GNU/Linux).
test.cc:8: prototype for `void titi::test(char *)' does not match any in class `titi'
test.cc:5: candidate is: void titi::test(const char *)
It seams that the const keyword in definition on titi::test is
forgotten.
note that the following work perfectly:
typedef char toto;
class titi{
public:
void test(const char t);
};
void titi::test(const toto t){
}
--
Thomas Guignon (guignon@asci.fr)
Laboratoire ASCI, ORSAY(France), www.asci.fr
#####
السلام عليكم ,,
لحل مشكلة الكود :
typedef char* toto;
class titi{
public:
void test(const char* t);
};
void titi::test(const toto t){
}غير تعريف typedef الى :
typedef const char* toto;
ثم غير تعريف الدالة الى ,,
void titi::test(toto t){}يبدو أن هناك مشكلة في أصل ال typedef حيث اذا كتبتها بطريقتك سيعتبر نوع ال tupedef وهو toto قبل const وتصبح ,,
char* const ,, بدلا من * const char ,, حيث يوجد فرق لغوي بينهما الاولى أن قيمة المتغير ثابته ,, والثاني هو أن قيمة الموشر للمتغير هي الثابتة ,,
لم أتأكد من سبب حماقة المصرف بعد لكن سأبحث في الامر ويبدو أن لها علاقة كما قلت بأصل typedef نفسه والله أعلم ,, ,, وقد جربت ذلك لل visual c++ ,, وسيعمل عندك باذن الله ,,
وفقك الله ,,
هذا الموضوع مغلق.