關於vscode編譯c/c++ 使用c++11的一個解決辦法,針對c和c++混編出現的問題的解決方法 [-fpermissive]出現后如何解決


1.  vscode配置c或者c++編譯開發環境,一般情況下足夠了,大概教程網上有很多,但是都只言片語,留一手.我在采坑無數次之后總結了一些經驗如下

    vscode編譯有兩種形式,一種是右鍵,這種形式,使用默認setting,都不知道在哪里配置的,可控性賊差,並且有一點必須注意,vscode默認只會編譯一個文件,這一點賊坑(哪個寫c++的只寫一個main文件)

 

 

    另一種編譯方式是類似於命令行形式,不同的是,得需要自己寫一些文件配置啥的,但是有一點好處是可控,如下

 

 

2.  c與c++混編,可能會出現指針強制轉化,編譯通不過的問題,  網上有說我以上遇到的問題解決方案是加上 CXXFLAGS=-fpermissive

    但是加在哪里也沒說,按照這個方向查找也沒具體些的信息,不過我猜測應該是cmake中的內容,

    因此在遇到c和c++混編的情況下,我還是建議,盡可能的使用專業的ide,比如virsual studio 2019或者qt,或者clion(我個人推薦clion)

    clion安裝  https://www.jianshu.com/p/1aa989808e15

3.  記錄下正常情況下vscode配置c++環境的幾個文件和步驟

    1 在項目根目錄下創建.vscode文件,並創建兩個文件夾,一個用來debug,一個用來執行指令

 

     launch.json

{
    "version": "0.2.0",
    "configurations": [

        {
            "name": "(gdb) Launch",    // 配置名稱,將會在啟動配置的下拉菜單中顯示
            "type": "cppdbg",         // 配置類型,這里只能為cppdbg
            "request": "launch",    // 請求配置類型,可以為launch(啟動)或attach(附加)
            "program": "${fileDirname}/${fileBasenameNoExtension}.exe",// 將要進行調試的程序的路徑
            "args": [],                // 程序調試時傳遞給程序的命令行參數,一般設為空即可
            "stopAtEntry": false,     // 設為true時程序將暫停在程序入口處,一般設置為false
            "cwd": "${workspaceRoot}",// 調試程序時的工作目錄,一般為${workspaceRoot}即代碼所在目錄
            "environment": [],
            "externalConsole": true,// 調試時是否顯示控制台窗口,一般設置為true顯示控制台
            "MIMode": "gdb",
            "miDebuggerPath": "E:\\c-c++\\TDM-GCC-64\\bin\\gdb64.exe",// miDebugger的路徑,注意這里要與MinGw的路徑對應
            "preLaunchTask": "g++",    // 調試會話開始前執行的任務,一般為編譯程序,c++為g++, c為gcc
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

    tasks.json

{
    "version": "2.0.0",
    "tasks": [{
            "label": "g++",
            "command": "g++",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}.exe"
            ],
            "problemMatcher": {
                "owner": "cpp",
                "fileLocation": [
                    "relative",
                    "${workspaceRoot}"
                ],
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            },
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

      2 記得添加環境變量

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM