কিউটি ক্রিয়েটারে সি ++ 11 কীভাবে সক্ষম করবেন?


167

শিরোনামটি বেশ স্ব-বর্ণনামূলক। আমি কিউটি ক্রিয়েটরটি ২.7.০ ডাউনলোড করেছি এবং আমি কয়েকটি বেসিক সি ++ ১১ কোড সংকলনের চেষ্টা করছি:

int my_array[5] = {1, 2, 3, 4, 5};
for(int &x : my_array)
{
  x *= 2;
}

আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:

range based for loops are not allowed in c++ 98 mode

তবুও, এই নিবন্ধ অনুসারে কিউটি ক্রিয়েটারের এই সংস্করণটি সি ++ 11 সমর্থন করে। তাহলে আমি কীভাবে এটি সক্ষম করব?


3
কিউটি ক্রিয়েটর কোনও সংকলক নয়। আপনি যখন পড়েন যে "কিউটি ক্রিয়েটর সি ++ 11 সমর্থন করে" এর অর্থ হ'ল কোড-সমাপ্তি ইঞ্জিন (এই ক্ষেত্রে বিড়ম্বনা) সি ++ 11 সিনট্যাক্স সমর্থন করে।
cmannett85

@ cmannett85 কিউটি ক্রিয়েটর এখনও কলংকে সি ++ সিনট্যাক্স পার্সার হিসাবে ব্যবহার করে না। চেষ্টা ছিল, তবে ক্ল্যাংয়ের এপিআই এবং এই সমাধানটির সাধারণ কার্য সম্পাদন এটিকে বিলম্বিত করে। এই দিকের বর্তমান কাজ এখানে অবস্থিত ।
রুবেনভবি

উত্তর:


261

এই সাইট অনুযায়ী যোগ করুন

CONFIG += c++11

আপনার .pro ফাইলটিতে (সেই ওয়েব পৃষ্ঠার নীচে দেখুন)। এটির কিউটি 5 প্রয়োজন।


অন্য উত্তরগুলি, পরামর্শ দিচ্ছে

QMAKE_CXXFLAGS += -std=c++11(বা QMAKE_CXXFLAGS += -std=c++0x)

এছাড়াও কিউটি 4.8 এবং জিসিসি / কলংয়ের সাথে কাজ করে


4
নামবিহীন ডাউনভোটরা কাউকে সহায়তা করছে না। উত্তরে কি দোষ?
আলী

সমস্যাটি হ'ল, আমি আপনার সদৃশ / অসম্পূর্ণ উত্তর মুছতে পারছিলাম না, আমি কেবল এটি হ্রাস করতে পেরেছিলাম। আপনি এটিকে আরও উপস্থাপনযোগ্য করার জন্য এটি সম্পাদনা করেছেন, আমি কেবল ডাউনটাওয়েতে খুশি।
নুরেটিন

9
প্রতিক্রিয়াটির জন্য ধন্যবাদ। আপনি যদি উত্তরগুলির সম্পাদনার ইতিহাস সাবধানতার সাথে পরীক্ষা করেন (আমার এবং অন্যান্য), আপনি দেখতে পাবেন যে আমার আসল উত্তরটি সদৃশ ছিল না; এটি আসলে অন্য একটি উত্তর যা নির্লজ্জভাবে আমার উত্তরের অংশটি চুরি করেছিল, আমার উত্তরটিকে সদৃশ হিসাবে দেখায়। তারপরে এই বছর আরও দুটি সদৃশ উত্তর হাজির। সম্পাদনা ইতিহাসে এটি নিজের জন্য পরীক্ষা করুন। এই তথ্য দেওয়া, আপনি কি আপনার ডাউনটাতে পুনর্বিবেচনা করবেন?
আলী

3
@ ট্রয়সেফ এই পরিস্থিতি সম্পর্কে আমার বোঝাপড়া। আমি ধরে নিচ্ছি আপনি জিসিসি ব্যবহার করছেন। যদি জিসিসি-র কোনও সংস্করণ সমর্থন করে -std=c++11, তবে এটিও (অবমূল্যায়িত) -std=c++0xপতাকাটিকে সমর্থন করবে এবং উভয় পতাকাগুলিতে অভিন্ন প্রভাব রয়েছে বলে মনে করা হচ্ছে (যা সম্ভবত আপনার মেশিনে কেস নয়)। যদি কোনও সংকলক সমর্থন -std=c++0xকরে তবে এর অর্থ এই নয় যে এটি বোঝে -std=c++11। সুতরাং, -std=c++0xসি ++ 11 সামঞ্জস্য মোডের জন্য ডিফল্ট হিসাবে বাছাই করা যুক্তিসঙ্গত পছন্দ। আমার মেশিন অন, অন্তত man পৃষ্ঠা অনুযায়ী , -std=c++0xএবং -std=c++11অভিন্ন।
আলী

1
@ ট্রয়সেফ এখন, এটি সত্য যে সংকলকটি এটি -std=c++11সমর্থন করে তবে এটি ব্যবহার করা ভাল Q ঠিক আছে, যদি এই সমস্যাটি আপনাকে খুব বেশি কষ্ট দেয় তবে আপনি একটি বাগ রিপোর্ট ফাইল করতে পারেন ...
আলী

32

এটি আপনার .pro ফাইলে যুক্ত করুন

QMAKE_CXXFLAGS += -std=c++11

অথবা

CONFIG += c++11

18

আলীর দুর্দান্ত উত্তরে সম্বোধন দুটি ক্ষেত্রেই পরিচালনা করার বিকল্প হিসাবে আমি সাধারণত যুক্ত করি add

# With C++11 support
greaterThan(QT_MAJOR_VERSION, 4){    
CONFIG += c++11
} else {
QMAKE_CXXFLAGS += -std=c++0x
}

আমার প্রকল্প ফাইল। আপনার দলে কোন Qt সংস্করণটি লোকেরা ব্যবহার করছে সে সম্পর্কে আপনি সত্যিই যত্নশীল হবেন না এমনটি কার্যকর হতে পারে তবে আপনি তাদের যে কোনও ক্ষেত্রে সি ++ 11 সক্ষম করতে চান।


এই -std = C ++ 11 হওয়া উচিত
Predrag Manojlovic

8

আপনার qmake ফাইল যুক্ত করুন

QMAKE_CXXFLAGS+= -std=c++11
QMAKE_LFLAGS +=  -std=c++11

4

আপনি যদি কিউটি (<5) এর পূর্ববর্তী সংস্করণ ব্যবহার করেন তবে এটি ব্যবহার করে দেখুন

QMAKE_CXXFLAGS += -std=c++0x

1

আমি এটি সফলভাবে কাজ করার একমাত্র জায়গা হ'ল অনুসন্ধান:

... \ কিউটি \ {5.9; বা আপনার সংস্করণ} \ মিংউ {53_32; বা আপনার সংস্করণ} \ mkspecs \ win32-g ++ \ qmake.conf:

তারপরে লাইনে:

QMAKE_CFLAGS           += -fno-keep-inline-dllexport

সম্পাদনা করুন:

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