我试图创建一个预处理器宏来为任何数据类型的矩阵/向量分配和释放内存。以下是我到目前为止的情况:
#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分配空间
答案 0 :(得分:0)
您确定您的MACRO名称应该是make_matrx
而不是make_matrix
吗?
您需要更正宏名称拼写。否则,当您在代码中使用make_matrix()
时,它找不到相应的函数。