கிராஸ்-பிளாட்ஃபார்ம் சி/சி++ ப்ராஜெக்ட்களை உருவாக்குதல்: நேவிகேட்டிங் கம்பைலர் சவால்கள்
க்ராஸ்-பிளாட்ஃபார்ம் மேம்பாட்டில் பெரும்பாலும் லினக்ஸ் மற்றும் விண்டோஸ் சிஸ்டங்களில் கட்டமைக்கப்பட வேண்டிய கோட்பேஸ்களை நிர்வகிப்பது அடங்கும். Linux க்கான Windows Subsystem (WSL) எழுச்சியுடன், பல டெவலப்பர்கள் விண்டோஸ்-குறிப்பிட்ட கருவிகளைப் பயன்படுத்தும் போது லினக்ஸ் போன்ற சூழலில் பணிபுரியும் நெகிழ்வுத்தன்மையை அனுபவிக்கின்றனர். இருப்பினும், இந்த கலப்பின அணுகுமுறை தனிப்பட்ட சவால்களுக்கு வழிவகுக்கும், குறிப்பாக GCC மற்றும் MinGW போன்ற கம்பைலர்களுடன் பணிபுரியும் போது. 🛠️
கவரேஜ் விருப்பங்கள் இயக்கப்பட்ட MinGW GCC ஐப் பயன்படுத்தி WSL கோப்பு முறைமையில் சேமிக்கப்பட்ட C/C++ ப்ராஜெக்ட்களை உருவாக்க முயற்சிக்கும்போது இதுபோன்ற ஒரு சிக்கல் எழுகிறது. ஒரு சக்திவாய்ந்த கருவித்தொகுப்பாக இருந்தபோதிலும், MinGW GCC பெரும்பாலும் WSL-மேப் செய்யப்பட்ட டிரைவ்களில் கோப்பு செயல்பாடுகளை சரியாக கையாள போராடுகிறது. இது வெற்று `.gcno` கோப்புகள் அல்லது கம்பைலர் வெளியீடுகள் காணாமல் போவது போன்ற பிழைகளை ஏற்படுத்தலாம், எதிர்பாராத விதமாக உங்கள் உருவாக்க செயல்முறையை நிறுத்தலாம்.
விளக்குவதற்கு, விண்டோஸில் மேப் செய்யப்பட்ட WSL டிரைவில் ஒரு எளிய `முதன்மை()` செயல்பாடு வெற்றிகரமாக தொகுக்கப்படும், ஆனால் `--கவரேஜ்` கொடி அறிமுகப்படுத்தப்படும்போது தோல்வியடையும் சூழ்நிலையைக் கவனியுங்கள். சிறிய சோதனைக் கோப்பு போன்ற அடிப்படை அமைப்புகள் கூட, இந்த சிரமங்களை எதிர்கொள்கின்றன, இதனால் டெவலப்பர்கள் தீர்வுகளைத் தேடுகிறார்கள். 🤔
இந்தக் கட்டுரை இந்த இணக்கத்தன்மை சிக்கல்களின் பிரத்தியேகங்களை ஆராய்கிறது, அவை ஏன் நிகழ்கின்றன மற்றும் செயல்படக்கூடிய தீர்வுகளை வழங்குகின்றன. நீங்கள் ஒரு அனுபவமிக்க டெவலப்பராக இருந்தாலும் அல்லது WSLக்கு புதியவராக இருந்தாலும், இந்த நுணுக்கங்களைப் புரிந்துகொள்வது உங்களுக்கு பல மணிநேர விரக்தியை மிச்சப்படுத்தலாம் மற்றும் உங்கள் மேம்பாட்டு பணிப்பாய்வுகளை நெறிப்படுத்த உதவும்.
| கட்டளை | பயன்பாட்டின் உதாரணம் |
|---|---|
| rsync | WSL மற்றும் Windows இயக்கிக்கு இடையில் கோப்புகளை நகலெடுக்கப் பயன்படுத்தப்படும் சக்திவாய்ந்த கோப்பு ஒத்திசைவுக் கருவி. எடுத்துக்காட்டு: rsync -av --delete "$SRC_DIR/" "$TGT_DIR/" இலக்கு கோப்பகம் மூலத்தின் முழுமையான கண்ணாடியாக இருப்பதை உறுதி செய்கிறது. |
| --coverage | குறியீடு கவரேஜ் பகுப்பாய்வை இயக்க ஒரு GCC கம்பைலர் கொடி. எடுத்துக்காட்டு: gcc --coverage test.c -o சோதனையானது இயங்கக்கூடியவற்றுடன் .gcno கோப்புகளை உருவாக்குகிறது. |
| gcov | GCCக்கான கவரேஜ் பகுப்பாய்வுக் கருவி. எடுத்துக்காட்டு: gcov test.c செயல்படுத்தலை பகுப்பாய்வு செய்து விரிவான கவரேஜ் அறிக்கையை உருவாக்குகிறது. |
| subst | ஒரு WSL கோப்பகத்தை ஒரு இயக்கி கடிதத்திற்கு வரைபடமாக்க ஒரு விண்டோஸ் கட்டளை. எடுத்துக்காட்டு: subst X: wsl.localhostUbuntu-22.04homeusertest WSL பாதையை X: ஆக அணுகக்கூடியதாக ஆக்குகிறது. |
| ls -l | விரிவான தகவலுடன் கோப்புகளை பட்டியலிட லினக்ஸ் கட்டளை. எடுத்துக்காட்டு: ls -l | grep .gcno குறிப்பாக கவரேஜ் கோப்புகளைக் காட்ட வெளியீட்டை வடிகட்டுகிறது. |
| Test-Path | ஒரு கோப்பு அல்லது கோப்புறை உள்ளதா என்பதை சரிபார்க்க பவர்ஷெல் கட்டளை. எடுத்துக்காட்டு: Test-Path a.exe தொகுக்கப்பட்ட இயங்கக்கூடியது இருப்பதை சரிபார்க்கிறது. |
| mkdir -p | தேவையான பெற்றோர் கோப்பகங்கள் உட்பட ஒரு கோப்பகத்தை உருவாக்குகிறது. உதாரணம்: mkdir -p "$BUILD_DIR" ஆனது உருவாக்க அடைவு இருப்பதை உறுதி செய்கிறது. |
| set -e | ஏதேனும் கட்டளை தோல்வியுற்றால், செயல்படுத்துவதை நிறுத்த ஷெல் ஸ்கிரிப்டிங் கட்டளை. எடுத்துக்காட்டு: செட் -இ ஸ்கிரிப்ட் பிழைகளை எதிர்கொள்வதை நிறுத்துகிறது, வலிமையை மேம்படுத்துகிறது. |
| uname -r | கர்னல் பதிப்பைக் காட்டுகிறது, WSL இல் ஸ்கிரிப்ட் இயங்குகிறதா என்பதைக் கண்டறியப் பயன்படுகிறது. எடுத்துக்காட்டு: [[ "$(uname -r)" == *WSL* ]] என்றால்; பின்னர் WSL சூழலை சரிபார்க்கிறது. |
WSLக்கான MinGW GCC இல் கவரேஜ் சிக்கல்களைத் தீர்ப்பது
வழங்கப்பட்ட ஸ்கிரிப்ட்கள் MinGW GCC உடன் உருவாக்கத் தவறிய சிக்கலைச் சமாளிப்பதை நோக்கமாகக் கொண்டுள்ளன கவரேஜ் ஒரு WSL கோப்பு முறைமையில். முதல் தீர்வு கோப்பு ஒத்திசைவு அணுகுமுறையைப் பயன்படுத்துகிறது, WSL சூழலில் குறியீடு மாற்றங்கள் விண்டோஸ் அணுகக்கூடிய இயக்ககத்தில் பிரதிபலிக்கப்படுவதை உறுதிசெய்ய `rsync` கட்டளையைப் பயன்படுத்துகிறது. இது Windows GCC கம்பைலரைப் பயன்படுத்தி தடையற்ற தொகுப்பை அனுமதிக்கும் போது கைமுறையாக நகலெடுக்க வேண்டிய தேவையை நீக்குகிறது. எடுத்துக்காட்டாக, ஒரு டெவலப்பர் WSL இல் தங்கள் குறியீட்டில் மாற்றங்களைச் செய்யலாம், மேலும் ஸ்கிரிப்ட் ஒத்திசைவை தானியங்குபடுத்துகிறது, சமீபத்திய பதிப்பு தொகுக்கப்படுவதை உறுதி செய்கிறது. ஆட்டோமேஷனின் பயன்பாடு இந்த செயல்முறையை திறமையாகவும் பிழையற்றதாகவும் ஆக்குகிறது. 🚀
இரண்டாவது தீர்வு GCC ஐ முழுவதுமாக WSL சூழலுக்குள் இயக்குவதன் மூலம் நேரடி அணுகுமுறையை எடுக்கிறது. விண்டோஸ் கோப்பு முறைமையை முழுவதுமாகத் தவிர்ப்பதன் மூலம், கோப்பு அனுமதிகள் அல்லது குறியீட்டு இணைப்புகளிலிருந்து எழும் பொருந்தக்கூடிய சிக்கல்களை இந்த முறை நீக்குகிறது. `gcc --coverage` போன்ற கட்டளைகள் `.gcno` கோப்புகளை உருவாக்குகின்றன, டெவலப்பர்கள் நேரடியாக WSL இல் துல்லியமான கவரேஜ் தரவை உருவாக்க உதவுகிறது. ஒரு நடைமுறை உதாரணம் டெவலப்பர் ஒரு எளிய `முதன்மை()` செயல்பாட்டைச் சோதித்து, அதை கவரேஜ் கொடிகளுடன் தொகுத்து, சூழல்களுக்கு இடையில் மாறாமல் அர்த்தமுள்ள கவரேஜ் அறிக்கைகளை உருவாக்குவது. இந்த அணுகுமுறை முற்றிலும் லினக்ஸ் போன்ற மேம்பாட்டு அமைப்பில் தங்க விரும்பும் பயனர்களுக்கு மிகவும் பயனுள்ளதாக இருக்கும். 💻
மூன்றாவது ஸ்கிரிப்ட் இயக்க சூழலைக் கண்டறிந்து (Windows அல்லது WSL) அதன் நடத்தையை அதற்கேற்ப சரிசெய்வதன் மூலம் பல்துறைத்திறனை சேர்க்கிறது. இது WSL ஐ சரிபார்க்க `uname -r` கட்டளையைப் பயன்படுத்துகிறது மற்றும் முடிவுகளின் அடிப்படையில் பாதைகள் மற்றும் கம்பைலர்களை அமைக்கிறது. ஸ்கிரிப்ட் எங்கு செயல்படுத்தப்பட்டாலும், அது சரியான டூல்செயின் மற்றும் கோப்பகங்களைத் தேர்ந்தெடுக்கிறது என்பதை இது உறுதி செய்கிறது. எடுத்துக்காட்டாக, விண்டோஸ் ஹோஸ்டில் ஸ்கிரிப்டை இயக்கும் பயனர், அது ஒரு பில்ட் டைரக்டரியை அமைத்து MinGW GCC ஐத் தொடங்குவதைப் பார்ப்பார், அதே நேரத்தில் WSL பயனர் சொந்த Linux GCC கட்டளைகளைப் பெறுவார். குழு உறுப்பினர்கள் வெவ்வேறு அமைப்புகளில் பணிபுரியும் கிராஸ்-பிளாட்ஃபார்ம் திட்டங்களுக்கு இத்தகைய தகவமைப்புத் திறன் சிறந்தது.
ஒவ்வொரு ஸ்கிரிப்டும் வலுவான பிழை கையாளுதலை ஒருங்கிணைக்கிறது, அதாவது கட்டளை தோல்வியுற்றால் (`set -e`). கூடுதலாக, அடைவு உருவாக்கம் (`mkdir -p`) உருவாக்க பாதைகள் இருப்பதை உறுதி செய்கிறது, மேலும் கோப்பு சோதனைகள் (`Test-Path`) தேவையான கோப்புகள் இருப்பதை உறுதிப்படுத்துகிறது. ஒன்றாக, இந்த ஸ்கிரிப்டுகள் குறுக்கு-தளம் மேம்பாட்டின் சிக்கல்களை நிர்வகிப்பதற்கான ஒரு விரிவான தீர்வை வழங்குகின்றன. கடினமான பணிகளை தானியக்கமாக்குவதன் மூலமும், பொதுவான குறைபாடுகளை நிவர்த்தி செய்வதன் மூலமும், டெவலப்பர்கள் நேரத்தைச் சேமிக்கிறார்கள் மற்றும் உற்பத்தித் திறனைப் பராமரிக்கிறார்கள், அவர்கள் எளிய சோதனை நிகழ்வுகளை உருவாக்கினாலும் அல்லது பெரிய அளவிலான திட்டங்களை உருவாக்கினாலும். இந்த உத்திகளின் கலவையானது டெவலப்பர்களைக் கையாள உதவுகிறது குறுக்கு மேடை உருவாக்குகிறது எளிதாகவும் நம்பிக்கையுடனும். 😊
WSL இல் MinGW GCC கவரேஜ் பில்ட் தோல்விகளுக்கான தீர்வு
இந்த தீர்வு WSL மற்றும் விண்டோஸ் டிரைவ் இடையேயான குறியீடு நகலெடுப்பை வெற்றிகரமாக தொகுக்க ஷெல் ஸ்கிரிப்டிங்குடன் கோப்பு ஒத்திசைவு அணுகுமுறையைப் பயன்படுத்துகிறது.
# Step 1: Define source and target directoriesSRC_DIR="/home/user/test"TGT_DIR="/mnt/c/test"# Step 2: Sync files to the target directoryrsync -av --delete "$SRC_DIR/" "$TGT_DIR/"# Step 3: Switch to the target directory in Windowscd "$TGT_DIR"# Step 4: Compile with coverage enabledgcc --coverage test.c -o test.exe# Step 5: Copy generated files back to the source directoryrsync -av --include="*.gc*" "$TGT_DIR/" "$SRC_DIR/"
நேட்டிவ் லினக்ஸ் கருவிகளைப் பயன்படுத்தி நேரடித் தொகுத்தல்
இந்த அணுகுமுறை கவரேஜ் உருவாக்கத்திற்காக WSL-நேட்டிவ் GCC தொகுப்பைப் பயன்படுத்துவதன் மூலம் விண்டோஸ் மேப்பிங்கை முழுவதுமாகப் புறக்கணிக்கிறது.
# Step 1: Navigate to the source folder within WSLcd /home/user/test# Step 2: Compile with coverage enabledgcc --coverage test.c -o test# Step 3: Verify output filesls -l | grep .gcno# Step 4: Execute the compiled binary./test# Step 5: Generate the coverage reportgcov test.c
தானியங்கு தொகுப்புக்கான தனிப்பயன் ஸ்கிரிப்டைப் பயன்படுத்துதல்
இந்த ஸ்கிரிப்ட் சுற்றுச்சூழலைக் கண்டறிதல் மற்றும் தடையற்ற WSL மற்றும் Windows பணிப்பாய்வுகளுக்கான தானியங்கு உருவாக்கப் படிகளை ஒருங்கிணைக்கிறது.
#!/bin/bashset -e# Step 1: Detect platformif [[ "$(uname -r)" == *WSL* ]]; thenecho "Running in WSL environment."GCC_PATH="/usr/bin/gcc"elseecho "Running in native Windows environment."GCC_PATH="C:/Tools/msys64/mingw64/bin/gcc"fi# Step 2: Define source and build directoriesSRC="test.c"BUILD_DIR="/mnt/c/test_build"mkdir -p "$BUILD_DIR"# Step 3: Copy source to build directorycp "$SRC" "$BUILD_DIR/"cd "$BUILD_DIR"# Step 4: Compile with coverage enabled"$GCC_PATH" --coverage "$SRC" -o test.exeecho "Build complete. Artifacts in $BUILD_DIR"
MinGW GCC மற்றும் WSL கோப்பு முறைமைகளுக்கு இடையிலான இணக்கத்தன்மையை நிவர்த்தி செய்தல்
பிரச்சினையின் ஒரு முக்கிய அம்சம் இடையேயான தொடர்பு உள்ளது WSL கோப்பு முறைமை மற்றும் MinGW GCC போன்ற விண்டோஸ் கருவிகள். WSL ஆனது Linux-அடிப்படையிலான கோப்பு முறைமையைப் பயன்படுத்துகிறது, இதில் குறியீட்டு இணைப்புகள் மற்றும் அனுமதிகள் போன்ற அம்சங்கள் உள்ளன, அவை Windows ஆல் பூர்வீகமாக ஆதரிக்கப்படவில்லை. MinGW GCC கவரேஜ் இயக்கப்பட்ட WSL இல் சேமிக்கப்பட்ட கோப்புகளை தொகுக்க முயற்சிக்கும் போது, இந்த லினக்ஸ்-குறிப்பிட்ட அம்சங்களைக் கையாளுவதில் சிரமம் ஏற்படுகிறது. இதனால்தான் `.gcno` கோப்புகளை சரியாக உருவாக்க இயலாமை போன்ற பிழைகளை டெவலப்பர்கள் சந்திக்கின்றனர். தீர்வுக்கு பெரும்பாலும் சூழல்களை திறம்பட இணைக்க வடிவமைக்கப்பட்ட கருவிகள் அல்லது ஸ்கிரிப்டுகள் மூலம் இந்த பொருந்தக்கூடிய இடைவெளிகளைக் குறைக்க வேண்டும்.
கவரேஜ் கோப்புகள் எவ்வாறு எழுதப்படுகின்றன என்பது மற்றொரு முக்கிய கருத்தாகும். GCC இந்த கோப்புகளை தொகுத்தல் செயல்பாட்டின் போது உருவாக்குகிறது, மேலும் இது தடையற்ற கோப்பு செயல்பாடுகளை எதிர்பார்க்கிறது. இருப்பினும், WSL கோப்பகங்களை அணுகும் Windows இல் உள்ள வரைபட இயக்கிகள் பெரும்பாலும் கோப்பு உருவாக்கம் மற்றும் மாற்றியமைப்பதில் கட்டுப்பாடுகளைக் கொண்டுள்ளன. உதாரணமாக, `gcc --coverage` போன்ற அடிப்படை கட்டளைகள் கூட கோப்பு பாதைகளில் உள்ள சிக்கல்களால் வெளியீட்டை உருவாக்கத் தவறிவிடுகின்றன. WSL சூழலில் நேரடியாக ஜி.சி.சியை இயக்குவதற்கான மாற்று வழிகளை ஆராய்வது அல்லது நேட்டிவ் விண்டோஸ் டிரைவில் கோப்புகளை ஒத்திசைப்பது, திட்ட ஒருமைப்பாட்டை பாதுகாக்கும் போது இந்த சவாலை சமாளிப்பதற்கான நடைமுறை அணுகுமுறைகளாகும். 😊
கிராஸ்-பிளாட்ஃபார்ம் குழுக்களுடன் பகிரப்பட்ட திட்டங்களில் பணிபுரியும் போது டெவலப்பர்கள் சிக்கல்களைச் சந்திக்கலாம். குழு உறுப்பினர்கள் வெவ்வேறு கணினிகளில் களஞ்சியங்களை குளோனிங் செய்தால், கோப்பு கையாளுதலில் உள்ள முரண்பாடுகள் தோல்விகளை உருவாக்க வழிவகுக்கும். வலுவான ஸ்கிரிப்ட்களுடன் பணிப்பாய்வுகளை தானியக்கமாக்குவது, முன்பு விவாதிக்கப்பட்டபடி, செயல்முறைகளை தரப்படுத்தலாம் மற்றும் பிழைகளைக் குறைக்கலாம். குறுக்கு-தளம் உத்திகளை செயல்படுத்துவதன் மூலம் மற்றும் நுணுக்கங்களை நிவர்த்தி செய்வதன் மூலம் வளர்ச்சி சூழல், டெவலப்பர்கள் சிக்கலான திட்டங்களுக்கு கூட மென்மையான மற்றும் நம்பகமான கட்டமைப்பை உறுதி செய்ய முடியும். 🚀
MinGW GCC மற்றும் WSL இணக்கத்தன்மை பற்றி அடிக்கடி கேட்கப்படும் கேள்விகள்
- MinGW GCC ஏன் WSL இல் `.gcno` கோப்புகளை உருவாக்கத் தவறியது?
- ஏனெனில் இது நடக்கிறது file system WSL இல் உள்ள அம்சங்கள், குறியீட்டு இணைப்புகள் போன்றவை, MinGW GCC போன்ற விண்டோஸ் கம்பைலர்களுடன் முழுமையாக இணங்கவில்லை.
- வேறு கம்பைலருக்கு மாறுவதன் மூலம் இந்தச் சிக்கல்களைத் தவிர்க்க முடியுமா?
- ஆம், ஒரு பயன்படுத்தி native Linux GCC WSL க்குள் இந்த இணக்கத்தன்மை சிக்கல்களை நீக்குகிறது, ஏனெனில் இது Linux கோப்பு முறைமைகளுடன் வேலை செய்ய வடிவமைக்கப்பட்டுள்ளது.
- WSL மற்றும் Windows இடையே ஒத்திசைக்கும் கோப்புகளை எவ்வாறு தானியங்குபடுத்துவது?
- நீங்கள் பயன்படுத்தலாம் rsync இரண்டு சூழல்களுக்கு இடையே தடையின்றி கோப்புகளை ஒத்திசைக்க ஒரு ஸ்கிரிப்ட்டில் கட்டளை.
- கிராஸ்-பிளாட்ஃபார்ம் மேம்பாட்டிற்கான சில சிறந்த நடைமுறைகள் யாவை?
- போன்ற கருவிகளைப் பயன்படுத்தவும் Git பதிப்பு கட்டுப்பாடு மற்றும் சூழல்கள் முழுவதும் நிலைத்தன்மையை உறுதிப்படுத்த தரப்படுத்தப்பட்ட உருவாக்க ஸ்கிரிப்ட்கள்.
- WSL 1 க்கு மாறுவது இந்த பிரச்சனைகளை தீர்க்குமா?
- அவசியம் இல்லை. WSL 1 வேறுபட்ட கட்டமைப்பைக் கொண்டுள்ளது, ஆனால் சில சந்தர்ப்பங்களில் இது Windows-நேட்டிவ் கருவிகளுடன் முழுமையான இணக்கத்தன்மையைக் கொண்டிருக்கவில்லை.
குறுக்கு-தளம் உருவாக்கங்களை நெறிப்படுத்துதல்
WSL கோப்பு முறைமைகளுடன் MinGW GCC இன் இணக்கமின்மை Linux மற்றும் Windows இரண்டிலும் பணிபுரியும் டெவலப்பர்களுக்கு ஒரு பொதுவான சவாலாகும். வடிவமைக்கப்பட்ட ஸ்கிரிப்ட்களை ஏற்றுக்கொள்வதன் மூலமும், கோப்பு ஒத்திசைவை தானியக்கமாக்குவதன் மூலமும், சொந்த WSL கருவிகளை மேம்படுத்துவதன் மூலமும், இந்த சிக்கல்களை திறம்பட குறைக்க முடியும், இது மென்மையான பணிப்பாய்வுகள் மற்றும் குறைவான பிழைகளுக்கு வழிவகுக்கும். 😊
சுற்றுச்சூழல் சார்ந்த சரிசெய்தல் முதல் வலுவான உருவாக்க ஆட்டோமேஷன் வரையிலான தீர்வுகளுடன், டெவலப்பர்கள் திட்ட ஒருமைப்பாடு மற்றும் உற்பத்தித்திறனை பராமரிக்க முடியும். இந்த உத்திகள் பல்வேறு வளர்ச்சி சூழல்களில் சிக்கலான திட்டங்களைச் சமாளிப்பதற்கான நம்பகமான அடித்தளத்தை வழங்குகின்றன, மேலும் குழுக்கள் மிகவும் திறம்பட ஒன்றாக வேலை செய்ய அதிகாரம் அளிக்கின்றன.
ஆதாரங்கள் மற்றும் குறிப்புகள்
- அதிகாரப்பூர்வ MSYS2 திட்டத்தில் இருந்து MinGW மற்றும் GCC இணக்கத்தன்மை சிக்கல்கள் பற்றிய விரிவான ஆவணங்கள். MSYS2 அதிகாரப்பூர்வ இணையதளம்
- WSL கோப்பு முறைமை நடத்தைகள் மற்றும் வரம்புகள் பற்றிய நுண்ணறிவு மற்றும் சரிசெய்தல் படிகள். மைக்ரோசாப்ட் WSL ஆவணம்
- GCC கம்பைலர் விருப்பங்கள் மற்றும் கவரேஜ் உருவாக்க நுட்பங்கள் பற்றிய தகவல். GCC அதிகாரப்பூர்வ ஆவணம்
- கிராஸ்-பிளாட்ஃபார்ம் டெவலப்மென்ட் ஃபோரங்களில் பயனர் புகாரளித்த சிக்கல்கள் மற்றும் தீர்வுகள். ஸ்டாக் ஓவர்ஃப்ளோ