সি এনগ্রিগেট ইনিশিয়ালাইজারগুলিতে [এন ... এম] এর অর্থ কী?


101

থেকে sys.c লাইন 123:

void *sys_call_table[__NR_syscalls] = 
{
    [0 ... __NR_syscalls-1] = sys_ni_syscall,
#include <asm/unistd.h>
};

sys_call_tableঅ্যারেগুলির একটি সাধারণ পয়েন্টার, আমি এটি দেখতে পারি। তবে স্বরলিপিটি কী:

[0 ... __NR_syscalls-1]

কি ...?


সম্পাদনা:
আমি এখানে আরও একটি সি ট্রিক শিখেছি: প্রাকট্রোসেস করা#include <asm/unistd.h> হবে এবং এর বিষয়বস্তু দ্বারা প্রতিস্থাপন করা হবে এবং নির্ধারিত হবে ।[0 ... _NR_syscalls-1]


2
না এটি কোনও অ্যারেতে নির্দেশক নয়, এটি পয়েন্টারগুলির একটি অ্যারে। একটি অ্যারেতে একটি পয়েন্টার ঘোষণা করা হবেvoid (*sys_call_table)[__NR_syscalls]
— প্যাট্রিক Schlüter

@ টিরিস্টোপিয়া আপনি ঠিক বলেছেন আমি কি বোঝানো অ্যারে, এর অনুরূপ পয়েন্টার ছিল char *argv[]। সংশোধন করা হয়েছে।
— আমুমু

উত্তর:


90

এটি হ'ল ডিজাইনেড ইনিশিয়ালাইজার ব্যবহার করে ইনিশিয়েশন ।

পরিসীমা ভিত্তিক সূচনাটি একটি gnu gcc এক্সটেনশন।

একই মানটিতে উপাদানগুলির একটি পরিসর শুরু করতে লিখুন [first ... last] = value। এটি একটি জিএনইউ এক্সটেনশন। উদাহরণ স্বরূপ,

 int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };

এটি বহনযোগ্য নয়। -pedanticআপনাকে তাই বলার সাথে সংকলন ।

এটি এখানে কীভাবে কাজ করে?
প্রিপ্রসেসর #include <asm/unistd.h>তার প্রকৃত বিষয়বস্তুগুলির সাথে প্রতিস্থাপন করে ( এটি বিবিধ প্রতীকী ধ্রুবক এবং প্রকারগুলি সংজ্ঞায়িত করে এবং বিবিধ কার্যাদি ঘোষণা করে ) পরিসীমা ভিত্তিক নির্মাণে, যা পরে পয়েন্টারের অ্যারে শুরু করার জন্য ব্যবহৃত হয়।


দেখে মনে হচ্ছে এটি পোর্টেবল নয়। হয়?
— আইভায়লো স্ট্রান্ডজেভ

5
@ মেহরদাদ কি মাইক্রোসফ্ট সি সংকলক সি 99 মানকে মেনে চলে? আমি আমার
— কেসটি

3
@ মেহরদাদ: আসলে, কেবলমাত্র মনোনীত ইনিশিয়ালাইজারের পরিসর ভিত্তিক নির্মাণই একটি সিসি এক্সটেনশন D ডিজাইনিগেট ইনিশিয়ালাইজারগুলি নিজেরাই সি স্ট্যান্ডার্ড দ্বারা অনুমোদিত।
— অলোক সেভ করুন

2
@ মেহরদাদ: দুঃখিত, আমি কোনও শিখা টোপের অংশ হতে চাই না, আমার উদ্দেশ্যটি কেবল একটি সূক্ষ্ম বিশদটিই স্পষ্ট করার ছিল যা আমি ভেবেছিলাম যে আপনি ভুল বুঝেছেন।
— অলোক

2
@ মেহরদাদ: স্পষ্টরূপে, পরিসীমা কেবলমাত্র সিসি (এবং এর বর্ধিতকরণগুলি সংযোজনকারী সংকলক) এর কাছে বহনযোগ্য পোর্টেবল তৈরি করে এবং সাধারণভাবে মনোনীত প্রারম্ভিকরা কেবল C99 (অথবা কমপক্ষে সেই নির্দিষ্ট বৈশিষ্ট্যটি) সমর্থনকারী সংকলকগুলির জন্য পোর্টেবল।
— কিথ থম্পসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.