मैं वीएस कोड संस्करण 1.62.0 (उपयोगकर्ता सेटअप) का उपयोग कर रहा हूं

मैं सी (test.c) में एक बुनियादी कार्यक्रम चलाने की कोशिश कर रहा हूँ:

#include <stdio.h>
#include <stdlib.h>

int main() {
    printf("Hello");
    return 0;
}

मैं प्ले साइन (CTRL+ALT+N) पर क्लिक करके दौड़ने की कोशिश कर रहा हूं, लेकिन यह टर्मिनल में इस तरह बदल जाता है:

PS C:\Users\X\Dropbox\My PC_X\Downloads> cd "c:\Users\X\Dropbox\My PC_X\Downloads\est\" ; if ($?) { g++ test.c *.c  -o test } ; if ($?) { .\test }
C:\Users\X\AppData\Local\Temp\ccyBS6yO.o:test.c:(.text+0x0): multiple definition of `main'
C:\Users\X\AppData\Local\Temp\ccwvYj0K.o:test.c:(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status

मुझे नहीं पता कि यह जानकारी मदद करती है या नहीं। आपकी जानकारी के लिए, मैं विंडोज 11 का उपयोग कर रहा हूं (जो मेरे मामले में मुझे लगता है कि वास्तव में टूटा हुआ है)। पहले, मैं [डेस्कटॉप, दस्तावेज़, चित्र] को वनड्राइव के साथ सिंक करता हूं (वनड्राइव मेरा स्थानीय फ़ोल्डर बन जाता है)। लेकिन दो दिन पहले, मैंने दस्तावेज़ों के लिए सिंक बंद कर दिया और कुछ दस्तावेज़ पूरी तरह से OneDrive में चले गए (जरूरी नहीं कि मेरे स्थानीय फ़ोल्डर में) [इसे और स्पष्ट करने के लिए, चित्र देखें]

Broken Windows  11

मेरा जीसीसी संस्करण यहां है:

gcc.exe (MinGW.org GCC-6.3.0-1) 6.3.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

यहाँ मेरा कार्य है। जेसन:

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe build active file",
            "command": "C:\\MinGW\\bin\\gcc.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "compiler: C:\\MinGW\\bin\\gcc.exe"
        }
    ]
}
0
adlofMerlin 8 नवम्बर 2021, 18:47
यह इस निर्देशिका में मेरी एक और एकमात्र सी फ़ाइल भी है
 – 
adlofMerlin
8 नवम्बर 2021, 18:50

2 जवाब

सबसे बढ़िया उत्तर

जो आपके आईडीई के कॉन्फिगरेशन से आया है, आप अपनी फाइल और फिर सभी .c फाइलों को संकलित करने की कोशिश कर रहे हैं और इसलिए पहले वाले को शामिल किया गया है, इसलिए इसमें 2 मुख्य हैं क्योंकि आप एक ही फाइल को दो बार संकलित करते हैं

 g++ test.c *.c  -o test
1
Saren 8 नवम्बर 2021, 18:50
if ($?) { g++ test.c *.c  -o test } 

आह, तो *.c के विस्तार के बाद आप दौड़ते हैं

g++ test.c test.c  -o test

इसलिए, जैसा कि त्रुटि संदेश कहता है, आपने main को दो बार परिभाषित किया है - test.c की दो प्रतियों में। इसलिए, अपने निर्माण कार्य से *.c को हटा दें।

1
Marcus Müller 8 नवम्बर 2021, 18:50
जब मैं रन (Ctrl+Alt+N) पर क्लिक करता हूं तो ये "if ... g++ ... test" टर्मिनल में डिफ़ॉल्ट रूप से दिखाई देते हैं, इसलिए हर बार जब मैं कोई अन्य प्रोग्राम चलाऊंगा तो क्या मुझे "*.c" भाग को हटा देना चाहिए? या क्या मैं केवल डिफ़ॉल्ट को संपादित कर सकता हूं ताकि यह ठीक से चले? कैसे?
 – 
adlofMerlin
8 नवम्बर 2021, 18:57
लगभग निश्चित है कि आपने इसे प्रोजेक्ट गुणों में कहीं न कहीं कॉन्फ़िगर किया है।
 – 
Marcus Müller
8 नवम्बर 2021, 19:09