gpt4 book ai didi

c++ - C 整数在 C++ 代码中使用时失去其常量状态

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:04 24 4
gpt4 key购买 nike

我目前正在处理一个 C/C++ 混合项目。我有一个全局常量 C 代码,我希望能够从我的 C++ 脚本和 C 脚本访问它。在这种特殊情况下,我尝试使用 C++ 数组,其维度由 C 全局常量代码中定义的常量整数组成。但是,当我尝试使用或声明此数组时,我收到错误消息,指出数组维度不是整数常量(尽管我在 C 代码中将它们定义为整数常量)。

常量.c

const int x = 5;

常量.h

#ifdef __cplusplus
extern "C" {
#endif

extern const int x;

#ifdef __cplusplus
}
#endif

我的_cpp.h

#include "constants.h"

我的_cpp.cpp

#include "my_cpp.h"

double A[x];

所以在这里,我会收到一条错误消息,指出 x 不是整数常量。我哪里出错了?

最佳答案

你没有在头文件中定义x,所以它不是核心常量表达式。

最简单的修复方法是在头文件中使用 const int x = 5;。或者,您可以使用枚举: enum { x = 5; } - 这给你真正的 prvalue,非常像文字 5 本身。

关于什么是 C++ 中的常量表达式(数组索引需要是 C++ 中的常量表达式)的更多信息可以在这里找到:https://en.cppreference.com/w/cpp/language/constant_expression

关于c++ - C 整数在 C++ 代码中使用时失去其常量状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56190712/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com