কি হবে 'স্ট্যান্ড:;' সি ++ এ কর?


89

আমি সম্প্রতি কিছু কোড সংশোধন করছিলাম, এবং একটি ফাংশনের মধ্যে একটি লাইনে একটি পূর্ব-বিদ্যমান বাগটি পেয়েছি:

std:;string x = y;

এই কোডটি এখনও সংকলন করে এবং প্রত্যাশার মতো কাজ করে চলেছে।

স্ট্রিং সংজ্ঞা কাজ করে কারণ এই ফাইলটি using namespace std;তাই std::প্রথম স্থানে অপ্রয়োজনীয় ছিল।

প্রশ্নটি হ'ল কেন std:;সংকলন করছে এবং যদি কিছু হয় তবে এটি কী করছে?


4
@ শিও: তাঁর কাছে থাকা প্রশ্নে তিনি বলেছিলেন using namespace std;
ফ্রেড লারসন

@ ফ্রেড: ডার্প! এই অংশটি কোড হিসাবে চিহ্নিত করা হয়নি, তাই আমি কেবল এটি উপেক্ষা করেছি। :) তবে আমি এখনও এই প্রশ্নের দিকে ইঙ্গিত করতে চাই ।
Xoo

23
একই কারণ যা http://www.stackoverflow.comসংকলন করে ...
কেরেক এসবি

20
তবুও ব্যবহার না করার আরেকটি কারণ using namespace std;:)
ডেভিড রদ্রিগেজ - ড্রিবিস

@ কেরেকএসবি রেডডিট ব্রাউজ করার সময় আমার এক বন্ধুর সাথে এটি হয়েছিল! লিংক নিষ্কাশিত হতে এই : ডি
mmirzadeh

উত্তর:


91

std:এটি একটি লেবেল, এর জন্য লক্ষ্য হিসাবে ব্যবহারযোগ্য goto

@ অ্যাডাম রোজেনফিল্ড একটি মন্তব্যে চিহ্নিত হিসাবে এটি একটি আইনী লেবেলের নাম।

সি ++ 03 §6.1 / 1:

লেবেলগুলির নিজস্ব নামের স্থান রয়েছে এবং অন্যান্য সনাক্তকারীদের সাথে হস্তক্ষেপ করবেন না।


4
আফাইক লেবেলগুলির নিজস্ব নামের স্থান রয়েছে, তাই অবশ্যই তারা কীওয়ার্ড বা ম্যাক্রো ব্যতীত অন্য কোনও কিছুর সাথে কখনও বিরোধ করে না।
রডরিগো

11
সি ++ 03 §6.1 / 1 বলছে "লেবেলের নিজস্ব নামের স্থান রয়েছে এবং অন্যান্য সনাক্তকারীদের সাথে হস্তক্ষেপ করবেন না।"
অ্যাডাম রোজেনফিল্ড

.1.১ / ১: "লেবেলগুলির নিজস্ব নামের স্থান রয়েছে এবং অন্যান্য সনাক্তকারীদের সাথে হস্তক্ষেপ করবেন না"
জন ডিবলিং

32

এটি একটি লেবেল, তার পরে একটি খালি বিবৃতি এবং তারপরে স্ট্রিংয়ের ঘোষণার পরে x




2

সংকলক আপনাকে বলছে কী চলছে:

#include <iostream>
using namespace std;
int main() {
  std:;cout << "Hello!" << std::endl;
}

জিসিসি এবং কলং উভয়ই একটি দুর্দান্ত স্পষ্ট সতর্কতা দেয়:

std.cpp:4:3: warning: unused label 'std' [-Wunused-label]
  std:;cout << "Hello!" << std::endl;
  ^~~~
1 warning generated.

এই গল্পটি থেকে দূরে সরিয়ে নিন: সর্বদা সতর্কতা সক্ষম হওয়া (যেমন -Wall) সহ আপনার কোডটি সংকলন করুন

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