এক্সকোডে প্রিপ্রোসেসর চিহ্নটি কীভাবে সংজ্ঞায়িত করবেন


100

কোনও এক্সকোড প্রকল্পে সম্পত্তি সেট আপ করে শর্তসাপেক্ষ সংকলনের জন্য একটি প্রতীক স্থাপন করা সম্ভব?

আমার লক্ষ্যটি এমন একটি প্রতীক তৈরি করা যা সমস্ত ফাইলের জন্য উপলভ্য, আমদানি / অন্তর্ভুক্ত না করেই উপলব্ধ থাকে, যাতে সাধারণ শ্রেণির একটি সেট কিছু প্রকল্পে একটি বিশেষ আচরণ করতে পারে। নিম্নলিখিত মত, কিন্তু আমার নিজস্ব চিহ্ন সহ।

#if TARGET_IPHONE_SIMULATOR
    ...
#endif

সম্পর্কিত: "
এক্সকোড

উত্তর:


116

আপনার লক্ষ্য বা প্রকল্প সেটিংসে যান, নীচে বামদিকে গিয়ার আইকনটি ক্লিক করুন এবং "ব্যবহারকারী-সংজ্ঞায়িত সেটিং যুক্ত করুন" নির্বাচন করুন। নতুন সেটিংয়ের নামটি হওয়া উচিত GCC_PREPROCESSOR_DEFINITIONSএবং আপনি ডান হাতের ক্ষেত্রে আপনার সংজ্ঞা টাইপ করতে পারেন।

স্টিফের মন্তব্যে, সম্পূর্ণ বাক্য গঠনটি হ'ল:

constant_1=VALUE constant_2=VALUE

দ্রষ্টব্য যে আপনার যদি '=' গুলি প্রয়োজন হয় না তবে আপনি যদি একটি মান দেওয়ার পরিবর্তে কেবল একটি চিহ্ন নির্দিষ্ট করতে চান ( #ifdefবিবৃতিতে)


2
ধন্যবাদ! যার আগ্রহী তাদের কাছে সিনট্যাক্সটি "kVarOne = 5 myVar = 3.0" (উদ্ধৃতি ব্যতীত) বলে মনে হচ্ছে, আমি এটি পরীক্ষার এবং ত্রুটির দ্বারা খুঁজে পেয়েছি। বেন আপনি নির্দিষ্ট করতে আপনার উত্তর সম্পাদনা করতে পারেন? আবার ধন্যবাদ.
স্টিপ থিরিওন

1
আশ্চর্যজনক উত্তর। আমার এখনও চুল আছে এই কারণে। আপনাকে ধন্যবাদ, আপনাকে ধন্যবাদ আপনাকে ধন্যবাদ. +1 (আমি আশা করি এটি আরও বেশি হতে পারে)
আলী পারর

11
এফওয়াইআই, এক্সকোড ৩.২.৪ অনুসারে, "প্রিপ্রসেসর ম্যাক্রোস" জিসিসিআরপিআরসিপ্রসেসিওর_ডিফাইনেশনগুলিতে মানচিত্র এবং এক্সকোড আপনাকে আর কোনও ব্যবহারকারী-সংজ্ঞা দিতে দেয় না (যেহেতু এটি ইতিমধ্যে উপলব্ধ) available
ক্লে ব্রিজ

11
এটি এখন নীচের বাম দিকে গিয়ার আইকন নয়, পরিবর্তে নীচের ডানদিকে একটি প্লাস আইকন (আপনার টার্গেটের বিল্ড সেটিংস ট্যাবটির)।
জেসি স্মিথ

1
আপনার এই প্রতিক্রিয়াটি আপডেট করা উচিত। আর কোনও গিয়ার আইকন নেই
Radu Simionescu

86

আপনার ব্যবহারকারীর দ্বারা সংজ্ঞায়িত সেটিং তৈরি করার দরকার নেই। বিল্ট-ইন সেটিং "প্রিপ্রসেসর ম্যাক্রোস" ঠিক ঠিক কাজ করে। Alt পাঠ্য http://idisk.mac.com/cdespinosa/Public/Picture%204.png

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


1
এই বিভাগটি বিল্ড সেটিংস থেকে অনুপস্থিত থাকলে আপনি কী করবেন?
কেভিন লইটি

3
বেন গটলিব তার পরামর্শ অনুযায়ী করুন। তবে এক্সকোডের ৩.২.৪ সংস্করণ অনুসারে, "প্রিপ্রসেসর ম্যাক্রোস" জিসিসিপিআরপিআরসিএসসিআর_ডিএফআইএনআইটি-তে ম্যাপ করে। আপনি ইতিমধ্যে উপলব্ধ কিছু ব্যবহারকারী-সংজ্ঞায়িত করতে পারবেন না।
ক্লে সেতুগুলি

41

সংযোজন হিসাবে, আপনি যদি আপনার টার্গেটে স্ট্রিংগুলি সংজ্ঞায়িত করতে এই কৌশলটি ব্যবহার করে থাকেন তবে আমাকে এইভাবে সংজ্ঞা ও ব্যবহার করতে হয়েছিল:

বিল্ড সেটিংসে -> প্রিপ্রসেসর ম্যাক্রোস এবং হ্যা ব্যাকস্ল্যাশ সংজ্ঞাতে গুরুত্বপূর্ণ:

APPURL_NSString=\@\"www.foobar.org\"

এবং উত্স কোডে:

objectManager.client.baseURL = APPURL_NSString;

এই সমাধানের জন্য ধন্যবাদ, একেবারে ঠিক এর মতো কিছু সন্ধান করা, তবুও স্ট্যাক ওভারফ্লো জটিল জটিলতায় পূর্ণ।
ডেভিড পি

5

আপনি *_Prefix.pchপ্রকল্পের প্রশস্ত ম্যাক্রো ঘোষণার জন্য ফাইলটি ব্যবহার করতে পারেন । এই ফাইলটি সাধারণত আপনার অন্যান্য উত্স গ্রুপে থাকে।


3

এটি "জিসিসি ৪.২ প্রিপ্রসেসিং" এর অধীনে (অথবা সন্ধান বাক্সে "প্রিপ্রো" রেখে দিন) ...

... তবে আমার জীবনের জন্য আমি এটি কাজ করতে পারি না।

আমার কাছে আমার স্ট্যান্ডার্ড ডিবাগ এবং প্রকাশের কনফিগারেশন রয়েছে এবং আমি ডিবাগ কনফিগারেশনে DEBUG = 1 টি সংজ্ঞায়িত করতে চাই। তবে এটি একটি মান হিসাবে যুক্ত করার পরে:

(সেটিংস উইন্ডোতে)> প্রিপ্রোসেসর ম্যাক্রোস: DEBUG = 1

#if DEBUG
    printf("DEBUG is set!");
#endif 

... কখনই প্রিন্ট / কল হয় না। এটা আমাকে পাগল করে ফেলছে...


10
পরিবর্তে ডিবাগ #if এর #if সংজ্ঞায়িত (ডিবাগ) চেষ্টা করুন বা #ifdef ডিবাগ
simo Salminen

আশ্চর্যজনকভাবে যথেষ্ট, আমি এখানে নিজেকে 2019 সালে পেয়েছি, সুইফট এবং এক্সকোড 10.3 সহ। উপরে বর্ণিত একই সমস্যা সহ যে কেউ এই সহায়ক হতে পারে; এটি অবশ্যই আমার #if DEBUGজীবন নিয়ে এসেছিল :) stackoverflow.com/a/47395485/2778502
জেফ-এইচ

1

কেভিন লাইটের মন্তব্যের জবাব (সিডিস্পিনোসার উত্তর দেখুন), আপনার বিল্ড সেটিংসে না জিসিসি প্রিপ্রোসেসিং বিভাগ সম্পর্কে, অ্যাক্টিভ এসডিকে তার (বেস এসডিকে) বলার পরে তৈরি করুন এবং এই বিভাগটি উপস্থিত হবে। আপনি মেনু প্রকল্প> অ্যাক্টিভ টার্গেট সেট করুন> XXX (বেস এসডিকে) চয়ন করে এটি করতে পারেন। এক্সকোডের বিভিন্ন সংস্করণে (বেস এসডিকে) আলাদা হতে পারে, যেমন (প্রকল্প সেটিং বা প্রকল্প ডিফল্ট)।

আপনি এই বিভাগটি উপস্থিত হওয়ার পরে, আপনি ব্যবহারকারী সংজ্ঞায়িত সেটিং তৈরি না করে প্রসেসর ম্যাক্রোতে আপনার সংজ্ঞাগুলি যুক্ত করতে পারেন।


1

এক্সকোড 9.4.1 এবং সি ++ প্রকল্পের জন্য। যোগ করা হচ্ছে const char*উভয় Preprocessor ম্যাক্রো ডিবাগ এবং রিলিজ তৈরী করে।

  1. আপনার প্রকল্প নির্বাচন করুন

    প্রকল্প নির্বাচন করুন

  2. বিল্ড সেটিংস নির্বাচন করুন

    বিল্ড সেটিংস নির্বাচন করুন

  3. " প্রিপ্রসেসর ম্যাক্রোস " অনুসন্ধান করুন

    search1 search2

  4. ইন্টারেক্টিভ তালিকা খুলুন

    ইন্টারেক্টিভ তালিকা খুলুন

  5. আপনার ম্যাক্রোগুলি যুক্ত করুন এবং উদ্ধৃতিটি এড়াতে ভুলবেন না

    পাথ যোগ করুন

  6. সাধারণ হিসাবে উত্স কোড ব্যবহার করুন const char*

    ...
    #ifndef JSON_DEFINITIONS_FILE_PATH
    static constexpr auto JSON_DEFINITIONS_FILE_PATH = "definitions.json";
    #endif
    ...
    FILE *pFileIn = fopen(JSON_DEFINITIONS_FILE_PATH, "r");
    ...

0

আপনি সেই লক্ষ্যটিকে নকল করতে পারেন যার প্রিপ্রোসেসিং বিভাগ রয়েছে, আপনার যে কোনও নামটি এটির নামকরণ করতে পারেন এবং তারপরে আপনার প্রিপ্রসেসর ম্যাক্রো মান পরিবর্তন করতে পারেন।

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