【问题标题】:Preproccesor macro to预处理器宏
【发布时间】:2015-04-15 15:38:07
【问题描述】:

我正在尝试创建一个预处理器宏来为任何数据类型的矩阵/向量分配和释放内存。这是我目前所拥有的:

  #ifndef H_ARRAY_H 
#define H_ARRAY_H

    #include "xmalloc.h" 
    #define make_vector(v,n) (v = xmalloc( (n) * sizeof *(v))
    #define free_vector(v) do { free(v) ; v = NULL; } while(0)
    #define make_matrx(a , m , n) do {                                              \
        size_t make_matrix_loop_counter;                                            \
        make_vector(a, (m) + 1);                                                \
        for ( make_matrix_loop_counter = 0; make_matrix_loop_counter < (m) ; make_matrix_loop_counter++)            \
            make_vector((a)[make_matrix_loop_counter], (n));                                \
        (a)[m] = NULL;                                                      \
    }  while (0)
    #define free_matrix(a) do {                                                     \
        if (a != NULL){                                                     \
            size_t make_matrix_loop_counter;                                        \
            for (make_matrix_loop_counter = 0 ; (a) [make_matrix_loop_counter] != NULL; make_matrix_loop_counter++)     \
                free_vector((a)[make_matrix_loop_counter]); \
        free_vector(a);                                                     \
        a != NULL;                                                      \
        }                                                           \
    } while (0)

但是当我尝试构造一个矩阵时,它会吐出一个错误“函数‘make_matrix’的隐式声明”。 有什么建议。 PS:xmalloc.h分配空间

【问题讨论】:

  • 您希望我们调试您的宏吗?

标签: c matrix vector dynamic-memory-allocation


【解决方案1】:

您确定您的 MACRO 名称应该是 make_matrx 而不是 make_matrix

您需要更正宏名称的拼写。否则,当您在代码中使用make_matrix() 时,它不会找到对应的函数

【讨论】:

  • @OliverCharlesworth 一张是你的,一张是我的,这就是目前的两张票。 :-)
猜你喜欢
  • 2015-07-31
  • 1970-01-01
  • 2010-09-19
  • 2020-02-09
  • 1970-01-01
  • 2011-01-26
  • 2013-05-13
  • 2012-05-12
相关资源
最近更新 更多