c++ - কেন 'abs() `ভিন্নভাবে প্রয়োগ করা হয়?



gcc compilation (1)

আপনি std::abs ব্যবহার করতে হবে , যা আদিম ধরনের জন্য overloads আছে।

আপনি C ++ সংস্করণটি এক ক্ষেত্রে পড়ে যাচ্ছেন, এবং পুরানো সি সংস্করণটি (যা তার অবিচ্ছেদ্য প্রকারের জন্য প্যারামিটারগুলিকে রূপান্তরিত করে)।

এগুলি এড়িয়ে চলুন: (1) using namespace std; ( এখানে কেন ) এবং (2) আপনার প্রয়োজনীয় কার্যকারিতাটি আনতে উপযুক্ত #include । C ++ স্ট্যান্ডার্ড লাইব্রেরি বাস্তবায়নের উপর নির্ভর করবেন না আপনার জন্য ফাইলগুলি অন্তর্নিহিতভাবে অন্তর্ভুক্ত করুন।

আপনি যদি সতর্কবার্তা স্তর যথাযথভাবে সেট করেন তবে কিছু কম্পাইলার আপনাকে "ক্ষতিকারক" রূপান্তর সম্পর্কে সতর্ক করবে।

আমি গত কয়েক সপ্তাহ ধরে আমার কোড একটি সুপার হতাশাজনক বাগ আছে করেছি। আমার কম্পিউটারটি আমার কম্পিউটারে প্রত্যাশিত ঠিক মত কাজ করবে, কিন্তু যত তাড়াতাড়ি আমি এটি এইচপিসি সার্ভারে আউট করেছি, এটি অদ্ভুত ফলাফল তৈরি করবে।

আমি এটি নিচে উষ্ণ করেছি: আমার কম্পিউটারে (iMac) ফাংশন abs() ফ্লোটিং পয়েন্ট সংখ্যার সাথে কাজ করে, কিন্তু সার্ভারে abs() এটিকে পূর্ণসংখ্যাতে ছিন্ন করে।

উদাহরণ:

সার্ভার

abs(-1.1341234) = 1

আমার ম্যাক

abs(-1.1341234) = 1.1341234

এখন আমি জানি আমি fabs() ব্যবহার করে এটি ঠিক করতে পারি, এটি কোন প্রশ্ন নয়। আমি মেশিনে gcc সংস্করণ তাকিয়ে এবং এই আউটপুট হয়:

সার্ভার

g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/apps/software/GCCcore/5.4.0/libexec/gcc/x86_64-unknown-linux-gnu/5.4.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --enable-languages=c,c++,fortran --enable-lto --enable-checking=release --disable-multilib --enable-shared=yes --enable-static=yes --enable-threads=posix --enable-gold=default --enable-plugins --enable-ld --with-plugin-ld=ld.gold --prefix=/apps/software/GCCcore/5.4.0 --with-local-prefix=/apps/software/GCCcore/5.4.0 --enable-bootstrap --with-isl=/dev/shm/GCCcore/5.4.0/dummy-/gcc-5.4.0/stage2_stuff
Thread model: posix
gcc version 5.4.0 (GCC) 

আমার ম্যাক

g++ -v
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1
Apple LLVM version 10.0.1 (clang-1001.0.46.3)
Target: x86_64-apple-darwin18.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

তাই আমার প্রশ্ন, কেন abs() GCC এবং clang মধ্যে বিভিন্ন ফলাফল উত্পাদন? এই সমস্যাটির আক্ষরিক অর্থে আমাকে 3 সপ্তাহ অগ্রগতি হয়েছে, তাই আপনি কল্পনা করতে পারেন যে আমি এখন অল্প পরিমাণে মিষ্টি নই ...





clang