表达式中括号组的 ISO C 等效项

2024-01-15

如何以符合 (ISO C99) 的方式执行以下操作?

#define MALLOC(type, length, message) ({                                      \
         type * a_##__LINE__ = (type *)malloc((length) * sizeof(type));       \
         assert(message && (a_##__LINE__ != NULL));                           \
         a_##__LINE__;                                                        \
      })

double **matrix = MALLOC(double *, height, "Failed to reserve");

注意:编译时我使用: gcc -std=c99 -pedantic ...


你不应该进行测试malloc() in an assert():当您进行发布构建时,它不会被编译。我没用过assert()在下面的程序中。

#include <stdio.h>
#include <stdlib.h>

void *mymalloc(size_t siz, size_t length,
               const char *message, const char *f, int l) {
  void *x = malloc(siz * length);
  if (x == NULL) {
    fprintf(stderr, "a.out: %s:%d: MALLOC: "
                    "Assertion `\"%s\" && x != ((void *)0)' failed.\n",
          f, l, message);
    fprintf(stderr, "Aborted\n");
    exit(EXIT_FAILURE);
  }
  return x;
}

#define MALLOC(type, length, message)\
      mymalloc(sizeof (type), length, message, __FILE__, __LINE__);

int main(void) {
  int height = 100;
  double **matrix = MALLOC(double *, height, "Failed to reserve");
  /* work; */
  free(matrix);
  return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

表达式中括号组的 ISO C 等效项 的相关文章

随机推荐

  • “未使用的导入警告”和 pylint

    因此 我正在使用 Python 开发一个项目 并尝试使其符合 pylint 以及一般情况下的标准 所以 我有一个源文件 我们将其称为 a py a py import loggingsetup def foo log info This i
  • C 堆栈中的递归[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 这是合并排序中分区的代码 我实际上无法理解 reusrion 在其中是如何工作的 合并排序分区 void partition int arr
  • 7z 命令行压缩文件夹

    我正在尝试使用 7zG exe 的命令行来压缩 7z 文件夹 我的代码适用于文件 但不适用于文件夹 有人可以告诉我使用 7z 命令行压缩文件夹的正确方法吗 以下是仅适用于文件的示例代码 每当我尝试运行此代码时 7zip 都会显示一个消息框
  • 如何在matlab中编写指标函数

    我是 matlab 的新用户 我想解决以下问题 我想构造一个分段常数函数f f应该是一个匿名函数 例如f t 1 0 0 25 t 然而 分段常数函数的区间数一般不固定 相反 分段间隔取决于用户输入 例如 如果输入4 则分段间隔变为 0 0
  • WooCommerce 在订单状态完成时触发功能

    我试图在订单完成时触发一个功能 我正在使用这段代码 add action woocommerce order status completed array this payment complete 1 然后这个函数 public func
  • 异步等待进度报告不起作用

    我有一个 C WPF 程序 它打开一个文件 逐行读取它 操作每一行 然后将该行写入另一个文件 那部分工作得很好 我想添加一些进度报告 因此我将方法设为异步 并将 wait 与进度报告结合使用 进度报告非常简单 只需更新屏幕上的标签即可 这是
  • 从 RSA .pem 文件获取私钥 [重复]

    这个问题在这里已经有答案了 鉴于这种 pem文件 使用 openssl 生成并使用密码加密 BEGIN RSA PRIVATE KEY Proc Type 4 ENCRYPTED DEK Info DES EDE3 CBC AC009672
  • 在注释视图上使用 canShowCallout 时出现 MKMapKit 异常

    我正在尝试使用非常简单的自定义地图注释视图和标注 创建注释视图时 只需将 UIImageView 作为子视图添加到其自身 效果很好 但是 当我在注释视图上调用 canShowCallout 时 返回视图后立即在 MapKit 中引发异常 堆
  • 在数据库中记录 ActionMailer 发送的电子邮件的最佳方式?

    我需要记录通过 ActionMailer 发送的电子邮件 而简单的文本文件是不够的 我需要将日志存储在 ActiveRecord 模型中 电子邮件发送性能可能会受到影响 但在这种情况下 这是最好的选择 因为应用程序随后会定期访问日志 我还需
  • 合并android清单文件,过滤器冲突

    我正在尝试合并 Unity 中 2 个插件的 Android 清单文件 但是有两个活动具有相同的意图过滤器 我只能让其中一个同时工作 在这 2 个冲突的活动中 清单文件中位于顶部的活动有效 因此 如果清单 1 中的活动位于顶部 则插件 1
  • 为什么 bash 没有捕获来自 Java 的 process.destroy() 的信号[重复]

    这个问题在这里已经有答案了 用于测试的脚本 The script below just hangs until you press Ctrl C then it takes two seconds to shut down I wrote
  • std::function 的类型推导

    以下代码不会编译 因为在编译时未调用匹配的 std function 构造函数 template
  • Windows - 直接运行 .py 与运行 python blah.py 的行为不同

    我有一个使用子进程的 python 脚本 import subprocess print Running stuff subprocess check call do stuff bat print Stuff run 如果它被命名为 bl
  • 如何使用 FB.ui Javascript sdk 在 Facebook 上上传视频

    我正在使用 FB ui 方法将图像发布到 facebook 如下所述 FB ui display popup method feed name image link link picture image path caption capti
  • Spark集群中RDD映射函数内部调用函数

    我正在测试我在代码中定义的一个简单的字符串解析器函数 但其 中一个工作节点在执行时总是失败 这是我一直在测试的虚拟代码 JUST A SIMPLE PARSER TO CLEAN PARENTHESIS def parseString fi
  • Android BATTERY_PROPERTY_ENERGY_COUNTER 返回固定值?

    我的应用程序每 5 秒在工作线程中运行以下代码 但它返回固定值 9223372036854775808 我错过了什么吗 BatteryManager batteryManager BatteryManager context getSyst
  • Symfony2 明文用户不起作用

    我尝试通过将其配置到 secure yml 中来配置一个简单的安全管理区域 我使用了 Symfony 的例子 security firewalls secured area pattern anonymous http basic real
  • 当数据可用时,组合框自动选择第一项

    我正在寻找在数据可用时选择第一项的方法 但如果源中没有数据 则不要选择 怎么做 我对 WPF 很陌生
  • 使用 @babel/preset-typescript 从环境 TypeScript 模块中使用枚举?

    是否可以食用enum来自正在编译的文件babel using babel preset typescript mymodule d ts declare module mymodule export enum Fruit apple App
  • 表达式中括号组的 ISO C 等效项

    如何以符合 ISO C99 的方式执行以下操作 define MALLOC type length message type a LINE type malloc length sizeof type assert message a LI