【问题标题】:How to fix "error: subscripted value is neither array nor pointer nor vector" in macros in c language?如何修复c语言宏中的“错误:下标值既不是数组也不是指针也不是向量”?
【发布时间】:2023-01-13 03:04:44
【问题描述】:

我有这样的代码:

typedef struct dArrString
{
    char** arr;
    int locLength;
    int length;
} dArrString;

#define D_ARR_STRING(NAME, ARR_STRING)\
    NAME.arr = (char**) malloc(0 * sizeof(char*))\
    NAME.locLength = 2;\
    NAME.length = 0;\
    printf("%s", ARR_STRING[0]);


int main()
{
    dArrString stos;
    char emptyStr = {'\0'};
    D_ARR_STRING(;stos, emptyStr);

    return 0;
}

问题在ARR_STRING[0]在 D_ARR_STRING 宏中,因为在编译这段代码后我得到了这样的错误:

错误:下标值既不是数组也不是指针也不是向量 printf("%s", ARR_STRING[0]);

我该如何解决这个问题或者我应该改成什么?

【问题讨论】:

  • D_ARR_STRING(;stos, emptyStr); 中的第一个分号应该达到什么目的?
  • 我不知道malloc(0) 是做什么的,但它不会给你任何记忆。
  • char emptyStr = {'\0'}; 没有声明数组,只是一个字符。

标签: c


【解决方案1】:

ARR_STRING 是宏的第二个参数,作为emptyStr 传递。

emptyStr 被声明为 char

char emptyStr = {'
猜你喜欢
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多