-D_XOPEN_SOURCE এর / অর্থ কী?


104

আমি সম্প্রতি এমন কিছু কোডের মুখোমুখি হয়েছি যা জিসিসি এই আরগটি ছাড়াই সংকলন করবে না। আমি জিসিসি ম্যান পৃষ্ঠাটি যাচাই করেছিলাম, তবে এই নির্দিষ্ট বিকল্পটি পাইনি। আমি খুঁজে পেয়েছিXOPEN_SOURCE , তবে কী করে সে সম্পর্কে খুব কম ব্যাখ্যা ছিল।

কেউ দয়া করে বিস্তারিত বলতে পারেন? আমি জানি -D_XOPEN_SOURCEবিভিন্ন মূল্যবোধ, যেমন সেট করা যেতে পারে 400, 600কিন্তু যারা কি না?

উত্তর:


132

যখন তুমি কর

#define _XOPEN_SOURCE <some number>

বা

cc -D_XOPEN_SOURCE=<some number>

এটি আপনার সংকলকটিকে এক্স / ওপেন এবং পসিক্স মানগুলিতে সংজ্ঞায়িত কিছু অতিরিক্ত ফাংশনের সংজ্ঞা অন্তর্ভুক্ত করতে বলে tells

এটি আপনাকে কিছু অতিরিক্ত কার্যকারিতা দেবে যা সর্বাধিক সাম্প্রতিক ইউএনআইএক্স / বিএসডি / লিনাক্স সিস্টেমগুলিতে বিদ্যমান তবে সম্ভবত উইন্ডোজের মতো অন্যান্য সিস্টেমে উপস্থিত নেই।

সংখ্যাগুলি বিভিন্ন সংস্করণের উল্লেখ করে।

আপনি যে প্রতিটি কল করবেন তার জন্য ম্যান পৃষ্ঠাটি দেখে আপনার কোনটি প্রয়োজন (যদি থাকে তবে) বলতে পারেন।

উদাহরণস্বরূপ, man strdupবলেছেন:

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       strdup(): _SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE >= 500
       strndup(), strdupa(), strndupa(): _GNU_SOURCE

যার অর্থ হল যে আপনার এইগুলির মধ্যে একটি রাখা উচিত:

#define _SVID_SOURCE
#define _BSD_SOURCE
#define _XOPEN_SOURCE 500
#define _XOPEN_SOURCE 600
#define _XOPEN_SOURCE 700

আপনার উত্স ফাইলের শীর্ষে কোনও #includeব্যবহার করার আগে যদি আপনি ব্যবহার করতে চান তবে strdup

অথবা আপনি রাখতে পারেন

#define _GNU_SOURCE

পরিবর্তে সেখানে, যা সোলারিস, ফ্রিবিএসডি, ম্যাক ওএস এক্স ইত্যাদিতে সংকলন না করে এমন দিকনির্দেশ সহ সমস্ত কার্যকারিতা সক্ষম করে

একটি #include, #defineবা একটি নতুন ফাংশন ব্যবহার করার আগে প্রতিটি পুরুষ পৃষ্ঠা পরীক্ষা করা ভাল ধারণা , কারণ কখনও কখনও আপনার বিকল্পগুলি এবং কীগুলির উপর নির্ভর করে তাদের আচরণ পরিবর্তন হয় #define, উদাহরণস্বরূপ বেসনামের সাথে (3)

আরো দেখুন:


4
এই ভাষা-উপভাষার সংজ্ঞায়িত করার জন্য "আপনার উত্স ফাইলের শীর্ষে" কতটা গুরুত্বপূর্ণ তা বোঝাতে কেবল একটি মন্তব্য Just যদি তারা একেবারে শীর্ষে না থাকে তবে তারা কাজ করে না।
ডাঃ ব্যক্তি ব্যক্তি II

6

-Dএকটি প্রিপ্রসেসর ভেরিয়েবল সংজ্ঞায়িত করার জন্য এসি সংকলক বিকল্প। এক্ষেত্রে_XOPEN_SOURCE

এটি প্রকৃতপক্ষে সংকলকটির আচরণকে প্রভাবিত করে না, বরং কিছু লাইব্রেরি যেমন স্ট্যান্ডার্ড সি লাইব্রেরিটি কীভাবে আচরণ করে তা পরিবর্তিত করে। এর মতো বেশ কয়েকটি বিকল্প রয়েছে। বেশিরভাগ ক্ষেত্রে তারা কিছু ইউএনআইএক্স নির্দিষ্ট প্রোগ্রামিং ইন্টারফেস, বা নির্দিষ্ট গ্রন্থাগার বিক্রেতা সম্পর্কে কিছু মানক নথির সাথে সম্পর্কিত হয়।

এর মধ্যে একটির সংজ্ঞা দেওয়া কখনও কখনও প্রয়োজনীয়, কারণ কিছু স্ট্যান্ডার্ড ফাংশন বা এমনকি তাদের স্বাক্ষরের আচরণের মানগুলির মধ্যে পার্থক্য থাকতে পারে। সুতরাং আপনার -D_XOPEN_SOURCEএকটি সামঞ্জস্যতা মোড চালু করতে অনুরূপ কিছু ব্যবহার করতে হতে পারে ।

এই পতাকাগুলির আর একটি সম্ভাব্য ব্যবহার হ'ল আপনার সি লাইব্রেরি প্রয়োগের দ্বারা প্রদত্ত এক্সটেনশনগুলি ঘুরিয়ে দিয়ে আপনার উত্স কোডটি একটি নির্দিষ্ট মানের সীমাতে থাকবে কিনা তা নিশ্চিত করা। আপনার কোড যতটা সম্ভব প্ল্যাটফর্মে চালিত হয়েছে তা নিশ্চিত করার জন্য আপনি এটি ব্যবহার করতে পারেন।


3

এটি শিরোনামকে প্রদত্ত আদর্শের সংজ্ঞা যেমন পিক্সিকের সাথে সম্পর্কিত বলে প্রকাশ করে। এটির সাথে সম্পর্কিত প্রকৃত আদর্শটি মান দ্বারা সংজ্ঞায়িত হয় (উদাহরণস্বরূপ এখানে 400 বা 600)। আদর্শ / মানবন্ধনের জন্য এই রেফারেন্সটি দেখুন ।


1

কোনও অজানা কারণে, 1995 এর নির্দিষ্টকরণে থাকা সত্ত্বেও ম্যাক ওএস / এক্স (এক্সকোড) স্টার্ডআপ () সংজ্ঞায়িত করতে 600 প্রয়োজন। মজিলা এবং অন্যান্যরা এতে প্রবেশ করেছে ...

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.