预处理器宏到

时间:2015-02-14 19:10:21

标签: c matrix vector dynamic-memory-allocation

我试图创建一个预处理器宏来为任何数据类型的矩阵/向量分配和释放内存。以下是我到目前为止的情况:

  #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)

但是当我尝试构造一个矩阵时,它会发出一个错误&#34;隐式声明函数'make_matrix'&#34;。 有什么建议。 PS:xmalloc.h分配空间

1 个答案:

答案 0 :(得分:0)

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

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