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


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.