Unable to compile C++ program on a macosx: error: unknown type name 'constexpr'

Unable to compile C++ program on a macosx: error: unknown type name 'constexpr'

我正在尝试编译以下程序。但是它给了我 error: unknown type name 'constexpr' 错误。我该怎么办?

代码:

//this is model.cpp. battery.cpp and load.cpp are two secondary files
#include "load.h"
#include "battery.h"

//compile time constants - Settings
constexpr int intervals = 96;
constexpr float e_min = 0.001;
constexpr int max_iters = 100;
constexpr int nloads = 10;
constexpr int nbat = 10;


struct devices
{
    load loadDevices[nloads];
    battery batteryDevices[nbat];
};

int main()
{


    //Initialization of the model
    devices devices1;

    return 0;
}

我在使用 constexpr 的每一行都遇到相同的错误。

error: unknown type name 'constexpr'
constexpr int intervals = 96;

我的C/C++配置.json文件如下:

{
    "configurations": [
        {
            "name": "Mac",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "macFrameworkPath": [],
            "compilerPath": "/usr/local/bin/gcc-11",
            "cStandard": "gnu17",
            "cppStandard": "gnu++17",
            "intelliSenseMode": "macos-gcc-x64"
        }
    ],
    "version": 4
}

系统:MACOSX

IDE: VSCode

使用 g++

在 Mac 的终端上编译

编译命令:g++ model.cpp battery.cpp load.cpp

如果您直接从命令行调用编译器,则不会使用 json 配置。在这种情况下,您必须自己指定每个选项:

g++ -std=gnu++17 -Wall -Werror model.cpp battery.cpp load.cpp

我只是添加了 -Wall -Werror 以备不时之需,没有它们你永远不应该编译你的代码。

如果没有 -std 选项,编译器将使用没有 constexpr.

的旧版本的 C++ 标准