- මම C / C ++ යන යෙදුම භාවිතා කිරීම නතර කළ යුතුද?
නියත වශයෙන්ම. මෙම යෙදුම භාවිතා කිරීමට අදහස් කරන්නේ කුමක්ද යන්න පැහැදිලි නැත, සමහර විට, මෙම පදය භාවිතා කරන පුද්ගලයා වෙනුවෙන් C සහ C ++ යනු කුමක්ද යන්න පිළිබඳ ව්යාකූලත්වය හැර.
මෙම ව්යාකූලත්වය එතරම්ම කලකිරීමට පත්වන ප්රභවයක් වන බැවින්, බොහෝ අය ඒ පිළිබඳව තරමක් හැඟීම්බර වී ඇති අතර, එම යෙදුමේ පෙනුම පමණක් ඔබගේ දායකත්වය පිළිබඳව නිෂේධාත්මක වීමට ප්රමාණවත් වේ. මෙය මෝඩකමක් ලෙස පෙනුනද එය අප සතුව ඇති බව පෙනේ.
“සී / සී ++” ගැන කතා කරනවා වෙනුවට ඔබ අදහස් කරන්නේ කුමක්ද යන්න පැහැදිලි කරන යෙදුමක් භාවිතා කරන ලෙස මම නිර්දේශ කරමි.
ඔබ තුළ සී දෙයක් හෝ නොතිබේ ද C ++ සඳහා සත්ය විය නොහැකි බව ගැන කතා කරනවා නම්, සරලව කියන්නේ සී .
උදාහරණය: C හි ශ්රිතය ප්රකාශ කළ යුත්තේ කෙසේද main
?
මුලදී, C ++ සඳහා පිළිතුර සමාන බව පෙනේ: int main()
හෝ int main(int, char**)
. නමුත් සාකච්ඡාව ඉදිරියට යත්ම, C ++ හි, ශ්රිතය ගෝලීය විෂය පථයෙන් ප්රකාශයට පත් කළ යුතු බව පෙන්වා දීම අදාළ විය හැකිය namespace
. අනෙක් අතට, main
C ++ නොපැමිණෙන අතර C නැවත නැවත ඇමතීමට ඉඩ දෙයි . C ++ හි, return 0;
ඔබ “වැටුණොත්” යන්නෙන් ගම්ය වේ , main
නමුත් C හි return
ප්රකාශය ඕනෑම මාර්ගයක අවශ්ය වේ. ලැයිස්තුව දිගින් දිගටම සිදුවන අතර, සාකච්ඡා කළ යුතු භාෂාව කුමක්දැයි ඔබ ඉදිරියෙන් පැහැදිලි කළහොත් එය සාකච්ඡාව වඩාත් සරල කරයි.
ඔබ C ++ හි යමක් ගැන කතා කරන්නේ නම් එය C සඳහා සත්ය විය හැකි හෝ නොවිය හැකිය, C ++ කියන්න .
උදාහරණය: සී ++ හි malloc()
සංස්කරණයක් int
මුලින් සියලු ශුන්ය වේ ද?
සී සඳහා කෙටි පිළිතුර සමාන වේ: නැත. නමුත් පිළිතුර ඉදිරියට calloc
යත්ම, C ++ හි හොඳ විකල්පයක් std::vector<int>
වනු ඇති බව පෙන්වා දීම වටී, C ++ තුළ, භාවිතා කිරීම වඩා හොඳ තේරීමක් විය හැකිය.
ඔබ C, හා C ++ අතර සමානත්වයක් පෙන්වා කිරීමට අවශ්ය නම්, කියන්න C සහ C ++ .
උදාහරණය: දී C සහ C ++, එම sizeof
ක int
අර්ථ ක්රියාත්මක වන අතර, සංග්රාහකයන් සහ නිර්මිතයන් අතර වෙනස් විය හැක.
මෙහිදී අපට පෙන්වා දීමට අවශ්ය වන්නේ සී සහ සී ++ එකම ආකාරයකින් හැසිරෙන බවයි. අපි පැහැදිලිවම භාෂා දෙකම ගැන කතා කරමු .
මම ඇත්ත වශයෙන්ම නිර්දේශ කරන්නේ ඔබ වඩාත් නිශ්චිත විය යුතු අතර “C” හෝ “C ++” ගැන පමණක් නොව නිවැරදි අනුවාදය ගැනද කතා කරන්න. භාෂා දෙකම විකාශනය වෙමින් පවතින අතර වැනි මෝඩ ප්රකාශයකි
C ++ සහය /* … */
සහ // …
අදහස් දක්වන අතර C පමණක් /* … */
ශෛලියට සහය දක්වයි .
හරි හෝ වැරදි නොවේ.
- # 1 සඳහා පිළිතුර ඔව් නම්, සී සහ සී ++ මිශ්රණයක් භාවිතා කරන වැඩසටහනක් මා හඳුන්වන්නේ කෙසේද?
භාෂාවන් අතිච්ඡාදනය වී ඇති හෙයින්, සෑම සී වැඩසටහනකම සී ++ හා අනෙක් අතට පෙනෙන කොටස් අඩංගු වේ . එසේ වුවද, කතුවරුන් බොහෝ විට සී හෝ සී ++ සම්පාදකයක් භාවිතා කර ඇත. එබැවින් C වැඩසටහන සම්පාදකයෙකු සමඟ සම්පාදනය කර ඇත්නම් “ C ” හි ලියා ඇති අතර “ C ++ සම්පාදකයෙකු භාවිතා කරන්නේ නම්“ C ++ වලින් ලියා ඇත ”යනුවෙන් පවසන්න , ඔවුන් නවීන C ++ විශේෂාංග භාවිතා කිරීම ප්රතික්ෂේප කළත්. සමහර අය C ++ කේතය C-style C ++ ලෙස හඳුන්වයි . අධික ලෙස පැටවීම, ව්යතිරේක, බහුමාපකය, සැකිලි සහ I / O ධාරාවන් නොමැති වීම එවැනි කේතයක පොදු ලක්ෂණයකි.
, ඒ වෙනුවට, සමහර ගොනු C ලියා හා C කම්පයිලරය සමග සම්පාදනය සහ සමහර නම් වෙනත් ගොනු C ++ ලියා හා C ++ compiler සමග සම්පාදනය, පසුව වස්තුව ගොනු එකට බැඳී, මම වැඩසටහන ලියා ඇත "කියා කියන්නේ යම් ඇත්ත වශයෙන්ම ඔබ දැනටමත් කර ඇති පරිදි C සහ C ++ ” මිශ්ර කිරීම .
කෙසේ වෙතත්, ඒ වෙනුවට, කතුවරුන් සෑම ලිපිගොනුවක්ම සී හෝ සී ++ සම්පාදකයෙකු සමඟ සම්පාදනය කළ හැකි අයුරින් ලිවීමට මහත් සැලකිල්ලක් දැක්වූයේ නම් සහ එහි ප්රති program ලයක් ලෙස ඇති වැඩසටහන එකම දේ කරයි නම්, ඔබට මෙසේ පැවසිය හැකිය “වැඩසටහන C සහ C ++ හි පොදු උප කුලකයක ලියා ඇත .
දෙවැන්න බොහෝ විට සී සහ සී ++ කේත අතර බෙදා ගත යුතු ශීර්ෂ ගොනු සඳහා වේ. එවැනි කේත ලිවීම පහසු නැත. ඔබ එවැනි නිර්මාණය කරන පමණක් භාවිතා වූ බව තවදුරටත් අවධාරණය කළ යුතු නම්, C සහ C ++ වලංගු බව හා වෙනස් සම්පාදක වෙළෙන්දන් විසින් පුළුල් ලෙස සහය දක්වයි, යන වචනය සඳහා එහා මෙහා ගෙන යා හැකි C සහ C ++ පොදු කුලකයක් අවධාරණය කිරීම සඳහා භාවිතා කළ හැක.
- මේ දෙකම “වෙනස්” භාෂාවන් වන බැවින්, යම් අවස්ථාවක දී සී ++ සම්පාදකයින් සී භාෂාවෙන් ලියා ඇති කේත වලට සහය දැක්වීම නවතා දැමිය හැකිද? (නූතන සී ++, සී මානසිකත්වයෙන් වෙනස් වන්නේ පොයින්ටර්ස්, ගතික මතක හැසිරවීම වැනි මූලික දේවල් සඳහා ද?)
මට මෙම ප්රශ්නය තේරෙන බව මට විශ්වාස නැත. C සහ C ++ සිට ඇත , විවිධ භාෂා, ඔබ බලාපොරොත්තු නොවන ඔවුන්ගෙන් එක් සඳහා සම්පාදක අනෙක් සඳහා ලිඛිත වැඩසටහනක් භාර කළ හැකිය. කෙසේ වෙතත්, සම්පාදකයින් බොහෝ විට මොඩියුලර් ආකාරයෙන් නිර්මාණය කර ඇති අතර සම්පාදකයෙකුට C ++ ඉදිරිපස කෙළවරක් තිබේ නම් , අවස්ථාවන් හොඳ නම් එයට C ඉදිරිපස අන්තයක් ද ඇත. (එවිට ඔබට අවශ්ය කුමන ඒවා විධාන රේඛා ස්විචයකින් හෝ ඒ හා සමාන ආකාරයකින් තෝරා ගනු ඇත.) භාෂා දෙකම පුළුල් ලෙස භාවිතයේ පවතින තාක් කල්, මෙය වෙනස් වනු ඇතැයි සිතිය නොහැක. “නූතන සී ++” පිළිබඳ ඔබේ අදහස මූලික වශයෙන් හොඳ කේතීකරණ ප්රමිතීන් හා සම්මත පුස්තකාලය පිළිබඳ කාරණයක් යැයි මම සිතමි. සිට සම්පාදක ගේ දෘෂ්ටිකෝණයට, භාෂා දෙකම පරිණාමය වෙනුවට diverging වඩා අභිසරණය වේ.
- අනුකූලතාව පවත්වා ගැනීම සඳහා සී / සී ++ ප්රමිති සකස් කරන පුද්ගලයින් අතර දැන් යම් සහයෝගීතාවයක් තිබේද?
ඔව්. C ++ 11 සහ C11 හි හඳුන්වා දී ඇති මතක ආකෘතිය සහ පරමාණුක මෙහෙයුම් පුස්තකාලය ඊට හොඳ නිදසුනකි. භාෂා දෙකේම නිර්මාණකරුවන් ගැළපුම වැදගත් බව වටහාගෙන එය වැඩිදියුණු කිරීමට කටයුතු කරමින් සිටින බව පෙනේ. පුද්ගලිකව, සහයෝගිතාව වඩාත් තීව්ර වන අතර අයිඑස්ඕ ක්රියාකාරී කණ්ඩායම් දෙක එකතු වී ඇති නමුත් මගේ පැතුම් වැදගත් නොවේ.
C ++ ක්රමලේඛන භාෂාවේ 4 වන සංස්කරණයේ § 44.3 හි C සහ C ++ හි විවිධ අනුවාදයන් අතර ඇති වෙනස්කම් හා පොදු ලක්ෂණ ගැන බර්න් ස්ට්රෝස්ට්රප් කතා කරයි . මෙම අවස්ථාවේ දී මෙම පදය භාවිතා කිරීම ඇත්ත වශයෙන්ම සුදුසු විය හැකි බැවින් එහි තේරුම පැහැදිලි ය.
- # 4 ඔව් නම්, එවැනි සහයෝගීතාවය නුදුරු අනාගතයේ දී නූතන සී ++ (11/14/17) පෙනුමෙන් අවසන් විය හැකිය.
ඉහත සාකච්ඡා කළ පරිදි, එය C ++ 11 හි සිදු වූ අතර නැවත සිදුවීමට අපේක්ෂා කෙරේ / බලාපොරොත්තු වේ / අවශ්ය වේ.