c - 预处理器宏

标签 c matrix vector dynamic-memory-allocation

我正在尝试创建一个预处理器宏来为任何数据类型的矩阵/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/

相关文章:

ios - 将 FDLIBM 库集成到 iOS

java - 在矩阵中按降序排列数字的边框

c++ - std::vector::push_back 的成本是成功还是无效?

c++ - 为什么我们需要维护自己的矩阵来转换 Game 对象?

vector - 确定点列表是否适合 "formation"?

c++ - 在 C++ 中的两个 vector 之间交换不同长度的序列

c - 从文本文件中逐字符读取多行时出现段错误

c - 底层字符集是否只依赖于 C 实现?

c - POSIX 在 stdint.h 中的 "two' s 补码表示是什么意思?

c - C编程中非常大的矩阵