关于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 记得添加环境变量

 

posted @ 2021-01-11 20:17  小城熊儿  阅读(3641)  评论(0编辑  收藏  举报