C 编译器错误 - 初始值设定项不是常量

2023-12-06

我有一个用于创建新的函数GQueue

GQueue* newGQueue(int n_ele, int ele_size)
{
    GQueue* q = (GQueue*) malloc(sizeof(GQueue));
    if(!q) return NULL;

    q->ptr = malloc(n_ele * ele_size);
    if(!(q->ptr))
    {
        free(q);
        return NULL;
    }

    q->in = q->out = q->count = 0;
    q->size = n_ele; q->ele_size = ele_size;

    return q;
}

我这样使用它:

volatile GQueue * kbdQueue = newGQueue(10, 1);

但是,在这一行出现以下编译错误:

Error: initializer element not constant

为什么会出现这种情况? 10 和 1 显然是常数,不应该打扰malloc等预c99 C code.

唯一的标志是-Wall.

Thanks


您只能在声明时使用常量值初始化全局变量,这newGQueue is not.

这是因为在程序开始执行之前必须初始化所有全局变量。编译器在声明时获取分配给全局变量的任何常量值,并在程序的数据段它被直接加载到内存中操作系统加载程序当程序运行时。

只需在声明时将 kbdQueue 初始化为 NULL 并将其初始化为 main 或其他启动函数中的值即可。

volatile GQueue * kbdQueue = NULL;

int main() {
    kbdQueue = newGQueue(10,1);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 编译器错误 - 初始值设定项不是常量 的相关文章

  • 将反序列化方法转换为异步

    我正在尝试使用 Async Await 转换此将对象反序列化为字符串的方法 public static T DeserializeObject
  • 一种链接到类、方法,尤其是 C# 注释中的特定代码行的方法

    我想使用代码中指向目标的链接来构建某种文档 目标可以是Class or a Method或特定的代码行 指向特定的代码行是最重要的 我想到了VS2010的扩展或者特定的评论标签 有什么办法可以建立这种类型的链接吗 xml注释 沙堡可能就是你
  • 反序列化 GUID 数组时出现 JSON.NET 异常

    我正在使用 JSON NET 反序列化从浏览器发送的 AJAX HTTP 请求 并且在使用 Guid 作为参数的 Web 服务调用时遇到问题 当我使用内置的 NET 序列化器时 这工作得很好 首先 流中的原始字节如下所示 System Te
  • pop() 期间提升 Fibonacci 堆访问冲突

    Context 我目前正在实现某种形式的 A 算法 我决定使用 boost 的斐波那契堆作为底层优先级队列 我的图表是在算法运行时构建的 作为我使用的顶点对象 class Vertex public Vertex double double
  • 为什么要在 C 和 C++ 项目中创建 include/ 目录?

    当我处理我的个人 C 和 C 项目时 我通常把file h and file cpp在同一目录中 然后file cpp可以参考file h with a include file h 指示 然而 通常会发现库和其他类型的项目 如 linux
  • 处理可选依赖项 (C#)

    我们有一个可以选择与 TFS 集成的应用程序 但是由于集成是可选的 所以我显然不希望所有机器都需要 TFS 程序集作为要求 我应该怎么办 我是否可以在主程序集中引用 TFS 库 并确保在使用 TFS 集成时仅引用 TFS 相关对象 或者 更
  • 无符号长十六进制表示

    include
  • 如何为 IAsyncOperation 指定回调方法

    是否可以指定一个方法完成后调用async手术 平台 C Windows Phone 8 我需要实现非阻塞方法来异步发送UDP数据包 他们有我的方法 onWriteComplete int errorCode 操作完成时回调 这是我尝试过的
  • iText7 RegexBasedLocationExtractionStrategy 如何获取找到的文本的字体名和字体大小

    我尝试在 C 上使用 iText7 进行文本替换 我只能使用 RegexBasedLocationExtractionStrategy 获取搜索文本的内容和矩形 并且我想获取文本的字体和大小 有什么建议么 谢谢 你可以实施IText提取策略
  • 开始学习 C# 的最佳方式是什么?

    我对 vb 6 有一点编程经验 而 vb net 则不多 请告诉我成为专家 C 程序员的最佳方法 我知道这需要很长时间 想想你如何学习人类语言 阅读 写作 口语和听力 阅读代码 阅读文章 阅读示例 当您更有经验时 请查看您使用的一些项目的源
  • 来自“void *”的dynamic_cast

    根据this https stackoverflow com questions 3155277 cannot dynamic cast void to templated class void 没有 RTTI 信息 因此从void 不合法
  • 在 Silverlight 中调用 WCF 服务时使用 Observable.FromEvent

    我正在尝试使用 NET Reactive Framework 来简化对我正在编写的 Silverlight 3 应用程序使用的 WCF 服务的一些异步调用 问题是我很难找到一种有效的方式来构建我的代码 毫无疑问 部分问题是了解 Reacti
  • 对双向链表进行排序 C++

    尝试通过遍历列表的循环来完成此操作 在循环中 我将头节点输入到我定义的排序函数中 然后使用 strcmp 来确定节点中的哪个名称是否应该排在前面 它不起作用 因为写得太早了 我通过一次沿着列表一个节点进行线性比较 而不是回去查看第一个节点是
  • 检测非 DPI 感知应用程序是否已扩展/虚拟化

    我正在尝试在 WinForms 应用程序中检测它是否由于操作系统具有高 DPI 而以缩放 虚拟化模式启动 目前 在以 3840x2400 缩放 200 缩放运行的系统中 应用程序将分辨率视为 1920x1200 DPI 为 96 缩放因子为
  • 运行 SQL Server 报告服务时如何解决“远程服务器返回错误:(401) 未经授权”?

    我正在用这个code http www codeproject com Articles 25994 Creating a Proxy to Download PDF Reports from SRS从 SSRS 创建和下载 PDF 报告
  • 在 QML 中使用 C++ 枚举作为字符串

    我想做的是在 C 中使用以下枚举 class MyClass public QQuickItem Q OBJECT Q PROPERTY MyEnum enumValue READ getEnumValue public enum MyEn
  • C# 固定长度的字符串对象

    我有一堂课 我想使用固定大小的字符串 固定大小的原因是该类 序列化 为文本文件 具有固定长度的值 我想避免为每个值编写一个保护子句 而是让类处理它 所以我有大约 30 个属性 看起来像这样 public String CompanyNumb
  • 我使用 difftime 的 c 函数有时会返回 65535

    我有一个函数 使用 difftime 来检测自通信心跳停止以来的时间 以秒为单位 该函数的运行速度可以达到每 50 毫秒一次 该函数似乎可以工作 除了偶尔返回 65535 之外 我可以将执行次数减少到每秒一次 因为 difftime 的返回
  • 在 Angular 6 和 ASP.net 中启用 CORS

    我正在尝试从 Angular 6 应用程序向发送电子邮件的 API 发送 POST 请求 我用邮递员测试了该请求并且它有效 但是当我在 Angular 应用程序中执行 POST 请求时 我的控制台中出现错误 我在 Angular 应用程序中
  • C++ 中的 golang 风格“延迟”[重复]

    这个问题在这里已经有答案了 我正在阅读有关 go 语言的defer http blog golang org defer panic and recover陈述 它允许您指定函数结束时要执行的操作 例如 如果您有一个文件指针或资源 则只需指

随机推荐

  • HttpConnection 无法在真实设备中工作 -Blackberry

    这是我的代码 public String Serverconnection String url String line if DeviceInfo isSimulator url url deviceSide true try HttpC
  • 通过 Net::HTTP 下载 zip 文件

    我正在尝试从下载最新的 zipWordPress org使用 Net HTTP 这是我到目前为止所得到的 Net HTTP start wordpress org http resp http get latest zip open a z
  • 登录-AzureRmAccount 和选择-AzureRmSubscription

    我已经在 Windows Server 2012 R2 上安装了 AzureRm 和 Azure 模块 我可以从此模块运行其他 cmdlet 例如 AddAzureRmAccount Get AzureRmSubscription 但 Lo
  • Android,沿路径移动位图?

    我想知道是否可以从路径中选择坐标来随着时间的推移绘制位图 例如 我有一张太阳的图像 我想随着时间的推移沿着弧形路径移动它 有没有什么方法可以定义这样的路径 然后沿着它移动 这样我就不必进行数学计算 Thanks 是的 可以沿着路径移动图像
  • 如何在 MySQL 中设置日语模式排序规则

    我在整理方面遇到问题 我想设置排序规则以支持日语 例如 当 table firstname 包含 时 包含 的查询应返回该记录 提前致谢 这就像 大写 和 小写 对吗 mysql gt SELECT COLLATE utf8 general
  • TestNG DataProvider 从 testng.xml 配置文件读取测试数据?

    TestNG DataProvider 是否可以从 testng xml 配置文件中读取测试数据 或者由于某种原因这是不现实的 我希望能够在套件级别和类级别从该文件读取测试数据 那么 给定一个像这样的testing xml 文件 我不确定它
  • Xamarin.Forms:UWP 应用的本地化

    如果我在 UWP 设备上运行我的应用程序 我会在Output window MakePRI 警告 0xdef00522 找到语言 en de 的资源 但未找到默认语言的资源 de DE en US 更改默认语言或使用默认语言限定资源 htt
  • ng-grid 将多个项目插入单元格

    如何将多个值插入到 1 个单元格 例如将电子邮件 电话和地址插入到 1 个单元格 我需要在单元格中减少行数和更多信息 我尝试过这样的方式 angular forEach scope genData function row row getN
  • Axis2 Web 服务客户端生成 - 无需修改客户端的类型

    是否可以使用 Axis2 和 Eclipse 生成 Web 服务客户端并让它使用包中已有的 java 类型 而不是创建它自己的类型 当然 原因是如果我已经创建了类型 A 并且它创建了自己的类型 A 我不能只将类型 A 的变量分配给类型 B
  • __has_cpp_attribute 不是“类似函数”的宏?

    我正在尝试介绍 deprecated 属性到我的代码库中 然而 并不是所有我需要支持的编译器都支持这种语法 标准化之前不同编译器使用的各种方法在属性标准化提案 N2761 因此 我尝试使用此属性有条件地编译 has cpp attribut
  • Python NameError:名称未定义(与默认输入参数类型有关)

    我对我打电话的事实有疑问len myByteArray 在我声明的函数的输入参数中 我希望它成为默认参数 但 Python 似乎不喜欢它 myByteArray属于类型bytearray See 关于 bytearray 的文档在这里 我正
  • 将闭包存储在 HashMap 中

    为了学习 Rust 语言 我使用了一个旧的 C 库并尝试将其转换为 Rust 它使用了很多 C 11 闭包 我在翻译这些概念时遇到了一些困难 在 C 中我有这样的事情 library h struct Event just some dat
  • 使用 vlc 的 Python QT 应用程序不显示全屏

    我正在开发一个应用程序 其中显示多个 vlc 流 rtsp 通过双击其中一个流 该流应该全屏显示 该应用程序是使用 pyqt5 和 vlc qt 的 python 3 7 代码如下 import sys import vlc from Py
  • 从 Visual Studio 2015 中完全删除 ApplicationInsights

    我环顾四周 并没有找到一个好的答案 所以我发布这个问题 希望它可以成为其他希望完全删除 Application Insights 的人的一种 参考 我尝试的第一个显而易见的事情是从 工具和扩展 中卸载该工具 但不幸的是 这让事情变得更糟 现
  • 按价格列对表格进行排序

    这是账单清单 Service Price S1 13 CHF S2 Free S3 Free S4 40 CHF 我想使用 jQuery 或纯 JavaScript 按价格对其进行排序 不是服务器端 I tried jQuery 表排序器
  • 从浏览器中检测 USB 设备是否已插入 Javascript

    是否有基于 Javascript 的机制 我可以通过浏览器检测用户是否插入了特定的 USB 设备 出于安全原因 Web 浏览器中的 JavaScript 仅提供受限制的访问计算机资源 这是不可能将文件存储在任意文件夹中 启动应用程序或与US
  • mod_rewrite php mysql

    我对 mod rewrite 非常陌生 我一直在试图解决这个问题 但真的很困难 p 这是我的问题 我有一个页面http example com user s 81 s 81 正在从数据库中的用户 ID 读取 我想要的是一个链接 http e
  • Request.QueryString 为空时出错

    有时用户会错误地重定向到 Process ViewImages PAGEID 发生这种情况时 他们会收到以下错误 Microsoft VBScript 运行时错误 800a000d 类型不匹配 字符串 FLPM cp images cs a
  • C malloc 只为 int * 分配了 8 个字节 [重复]

    这个问题在这里已经有答案了 我正在尝试创建一个指向6元素int在函数中稍后返回它 因此为此目的我使用malloc 但它的表现似乎并不符合我的预期 这是代码 int j 0 for j lt 5 j int intBig malloc j s
  • C 编译器错误 - 初始值设定项不是常量

    我有一个用于创建新的函数GQueue GQueue newGQueue int n ele int ele size GQueue q GQueue malloc sizeof GQueue if q return NULL q gt pt