我正在尝试创建一个预处理器宏来为任何数据类型的矩阵/vector 分配和释放内存。这是我到目前为止所拥有的:
#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分配空间
最佳答案
您确定您的宏名称应为 make_matrx
而不是 make_matrix
吗?
您需要更正宏名称拼写。否则,当您在代码中使用 make_matrix()
时,它不会找到相应的函数。
关于c - 预处理器宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28519192/