কমপক্ষে কিছু সি প্রিপ্রোসেসর আপনাকে একটি ফাংশন-মতো ম্যাক্রোর মাধ্যমে অন্যটিকে স্ট্রাইনে রূপান্তর করে ম্যাক্রোর নামটির পরিবর্তে এর মানকে স্ট্রাইজ করতে দেয়:
#define STR1(x) #x
#define STR2(x) STR1(x)
#define THE_ANSWER 42
#define THE_ANSWER_STR STR2(THE_ANSWER) /* "42" */
উদাহরণ ব্যবহারের ক্ষেত্রে এখানে ।
এটি কমপক্ষে জিসিসি এবং কলংয়ে (উভয় সহ -std=c99) কাজ করে তবে আমি নিশ্চিত নই যে এটি সি-স্ট্যান্ডার্ড পদগুলিতে কীভাবে কাজ করে।
এই আচরণ কি গ্যারান্টিযুক্ত C99?
যদি তা হয় তবে সি 99 কীভাবে এটির গ্যারান্টি দেয়?
যদি তা না হয় তবে আচরণটি কোন সময়ে সি-সংজ্ঞায়িত থেকে জিসিসি-সংজ্ঞায়িত হয়?