Κοινή χρήση τεχνολογίας

Ρυθμίστε τις παραμέτρους του μεταγλωττιστή C (.sublime-build) στο sublime για να εφαρμόσετε τη χρήση του C 20 στο sublime, σεμινάριο αρχαρίων

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Προκαταρκτική προετοιμασία

Πρώτα πρέπει να προετοιμάσουμε το περιβάλλον C++ Φυσικά, εάν πιστεύετε ότι το τρέχον περιβάλλον C++ σας έχει ρυθμιστεί και η έκδοση C++ μπορεί να καλύψει τις καθημερινές σας ανάγκες, μπορείτε να χρησιμοποιήσετε τις ακόλουθες δύο εντολές για να κάνετε ερώτημα στην έκδοση C++.

g++ -v
  • 1
g++ --version
  • 1

Απλώς κρίνετε εάν οι ανάγκες σας μπορούν να λυθούν από την έκδοση που επιστράφηκε.

  • GCC 4.8: Υποστήριξη C++11 (μερική)
  • GCC 4.9: Υποστηρίζει C++11 και C++14 (μερική)
  • GCC 5: Πλήρης υποστήριξη για C++14
  • GCC 6: Υποστηρίζει C++14 και C++17 (μερική)
  • GCC 7: Υποστηρίζει C++17 (κυρίως)
  • GCC 8: Υποστηρίζει πλήρως C++17, υποστηρίζει μερικώς C++20
  • GCC 9: Υποστηρίξτε περισσότερες δυνατότητες C++20
  • GCC 10: Υποστηρίζει τις περισσότερες δυνατότητες C++20
  • GCC 11: Πιο ολοκληρωμένη υποστήριξη για C++20
  • GCC 12: Υποστηρίζει σχεδόν όλες τις δυνατότητες C++20
  • GCC 13 και μεταγενέστερα: Προσθέστε πλήρη υποστήριξη για C++20 και ξεκινήστε την υποστήριξη για C++23

Εάν διαπιστώσετε ότι δεν έχετε διαμορφώσει τις παραμέτρους της C++ ή πιστεύετε ότι η τρέχουσα έκδοση δεν μπορεί να υποστηρίξει την καθημερινή εκμάθηση, τότε πρέπει να κάνετε λήψη ενόςMingw configure περιβάλλον C++

Επί του παρόντος χρησιμοποιώ το τρέχον τελευταίο μου Mingw ως επίδειξη

![[Επικολλημένη εικόνα 20240711232026.png]]

Μετά τη λήψη, αποσυμπιέστε το σε έναν φάκελο που γνωρίζετε, ανοίξτε τη διαδρομή του αποσυμπιεσμένου αρχείου και βρείτε ένα αρχείο bin

[[Επικολλημένη εικόνα 20240711232411.png]]

Αφού το ανοίξετε, αντιγράψτε την παραπάνω διαδρομή αρχείου Είναι καλύτερο να χρησιμοποιήσετε την πλήρη αγγλική διαδρομή κατά την αποσυμπίεση.

e.g. : D:ProgramFilesmingw64bin
  • 1
  1. Επεξεργασία μεταβλητών περιβάλλοντος συστήματος

Επικολλημένη εικόνα 20240711232650

  1. Μεταβλητές περιβάλλοντος…
    ![[Επικολλημένη εικόνα 20240711232725.png]]

  2. Επεξεργαστείτε το περιεχόμενο στη διαδρομή παρακάτω, Επεξεργασία->Νέο, βάλτε τη διαδρομή επάνω, επιλέξτε αυτήν τη διαδρομή και μετακινήστε την στην κορυφή.
    ![[Επικολλημένη εικόνα 20240711232813.png]]

  3. Συνεχίστε να κάνετε κλικ στο OK για να ολοκληρώσετε.

Δοκιμάζω την έκδοση g++.

2. Διαμόρφωση περιβάλλοντος

Εργαλεία -> Σύστημα μεταγλώττισης-----> Νέο Σύστημα Μεταγλώττισης... θα δημιουργήσει ένα αρχείο *.sublime-build στο οποίο είναι διαμορφωμένο το αρχείο C++ JSON Φυσικά, μπορείτε επίσης να τροποποιήσετε το υπάρχον αρχείο μεταγλώττισης.

1. Μέθοδος διαμόρφωσης τύπου Fool

Αντιγράψτε τον παρακάτω κώδικα στο αρχείο που αναφέρεται παραπάνω, αποθηκεύστε το και επιλέξτε ξανά το αρχείο JSON που μόλις επεξεργαστήκατε για να μεταγλωττίσετε τη C++.

{  
   "shell_cmd": "g++  -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause"",  
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
   "working_dir": "${file_path}",  
   "selector": "source.c++",  
   "encoding": "gbk",  
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2. Βασική μέθοδος διαμόρφωσης

από προεπιλογή,g++ Οι μεταγλωττιστές συνήθως δεν χρησιμοποιούν το πιο πρόσφατο πρότυπο C++, αλλά αντίθετα χρησιμοποιούν ένα σταθερό προεπιλεγμένο πρότυπο (συνήθως ένα παλαιότερο πρότυπο όπως C++14 ή C++17) για να διασφαλίσουν τη συμβατότητα με παλαιότερο κώδικα.Αν λοιπόν δεν το διευκρινίσετε ρητά-std=c++20 ή-std=c++23, ο μεταγλωττιστής μπορεί να μεταγλωττίσει χρησιμοποιώντας ένα παλαιότερο πρότυπο, το οποίο μπορεί να προκαλέσει σφάλματα κατά τη χρήση δυνατοτήτων από το νέο πρότυπο.

Επομένως, εάν θέλουμε να χρησιμοποιήσουμε την πιο πρόσφατη μέθοδο μεταγλώττισης, θα πρέπει να αναφερθούμε στην παραπάνω, τη μέγιστη έκδοση C++ που υποστηρίζεται από τον μεταγλωττιστή μας, ώστε να ενημερώσουμε το αρχείο JSON μας για μεταγλώττιση με την πιο πρόσφατη έκδοση της C++.

{  
   "shell_cmd": "g++ -std=c++23 -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause"",  
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
   "working_dir": "${file_path}",  
   "selector": "source.c++",  
   "encoding": "gbk",  
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Η συγκεκριμένη αλλαγή είναι μόνο μία γραμμή κώδικα

![[Επικολλημένη εικόνα 20240711234819.png]]

3. Σε βάθος ανάλυση

Βασικά στοιχεία διαμόρφωσης

{  
   "shell_cmd": "g++ -std=c++23 -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause"",  
   //编译命令,使用C++20标准,指定输入和输出编码为UTF-8和GBK,并启用所有警告。如果编译成功,则启动一个新的命令行窗口运行生成的可执行文件,并在运行结束后暂停窗口。
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", // wrong answer 正则表达式匹配文件名等信息。   
   "working_dir": "${file_path}",  // working_dir 编译的工作区
   "selector": "source.c++",  // 对象
   "encoding": "gbk",  // encoding 编码 : 选择 gbk(国标:包含所有的汉字) 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
Δημιουργία παραλλαγών κειμένου
{
	[  
       {  
           "name": "Single File Build", // 只编译 
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}""  
       },  
       {  
           "name": "Single File Run",  //只运行
           "shell_cmd": "start cmd /c ""${file_base_name}" & pause""  
       },  
       {  
           "name": "Single File Build & Run", // 编译加运行 
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause""  
       },  


       // 下面为多文件编译 , 请勿使用 。
       {  
           "name": "Multiple Files Build",  
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall *.cpp -o "${file_base_name}""  
       },  
       {  
           "name": "Multiple Files Run",  
           "shell_cmd": "start cmd /c ""${file_base_name}" & pause""  
       },  
       {  
           "name": "Multiple Files Build & Run",  
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall *.cpp -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause""  
       }  
   ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
σύνολο
{  
   "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause"",  
   //编译命令,使用C++20标准,指定输入和输出编码为UTF-8和GBK,并启用所有警告。如果编译成功,则启动一个新的命令行窗口运行生成的可执行文件,并在运行结束后暂停窗口。
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", // wrong answer 正则表达式匹配文件名等信息。   
   "working_dir": "${file_path}",  // working_dir 编译的工作区
   "selector": "source.c++",  // 对象
   "encoding": "gbk",  // encoding 编码 : 选择 gbk(国标:包含所有的汉字) 
   "variants":  
   [  
       {  
           "name": "Single File Build", // 只编译 
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}""  
       },  
       {  
           "name": "Single File Run",  //只运行
           "shell_cmd": "start cmd /c ""${file_base_name}" & pause""  
       },  
       {  
           "name": "Single File Build & Run", // 编译加运行 
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause""  
       },  


       // 下面为多文件编译 , 请勿使用 。
       {  
           "name": "Multiple Files Build",  
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall *.cpp -o "${file_base_name}""  
       },  
       {  
           "name": "Multiple Files Run",  
           "shell_cmd": "start cmd /c ""${file_base_name}" & pause""  
       },  
       {  
           "name": "Multiple Files Build & Run",  
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall *.cpp -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause""  
       }  
   ]  

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39