C-程序集错误:无法转换为指针类型

C-程序集错误:无法转换为指针类型,c,function,pointers,assembly,parameter-passing,C,Function,Pointers,Assembly,Parameter Passing,我正在用C和assembly做一些事情,但是当我在main中调用iesimo时,我得到以下错误: #include <stdio.h> #include <assert.h> #include <stdlib.h> typedef struct nodo_t{ long dato; struct nodo_t *prox; } nodo; typedef struct lista_t{ nodo* primero; } li

我正在用C和assembly做一些事情,但是当我在main中调用iesimo时,我得到以下错误:

    #include <stdio.h>
#include <assert.h>
#include <stdlib.h>

typedef struct nodo_t{
    long dato;
    struct nodo_t *prox;
} nodo;

typedef struct lista_t{
    nodo* primero;
} lista;

extern int iesimo(lista* l, unsigned long i);

int main(int arg, char* argv[]) {
    lista l;
    nodo* n1 = malloc(sizeof(nodo));
    n1->dato = 123;
    n1->prox = NULL;
    l.primero = n1;
    nodo* n2 = malloc(sizeof(nodo));
    n2->dato = 456;
    n2->prox = NULL;
    n1->prox = n2;
    nodo* n3 = malloc(sizeof(nodo));
    n3->dato = 78;
    n3->prox = NULL;
    n2->prox = n3;
    nodo* n4 = malloc(sizeof(nodo));
    n4->dato = 78;
    n4->prox = NULL;
    n3->prox = n4;

    int response = iesimo((lista*) l, 2);

    assert(response == 456);

    return 0;
}

    main.c:35:5: error: cannot convert to a pointer type
     int response = iesimo((lista*) l, 2);
#包括
#包括
#包括
类型定义结构节点{
长拿督;
结构节点*prox;
}野藤;
类型定义结构列表{
诺多*普里梅罗;
}利斯塔;
extern int iesimo(列表A*l,无符号长i);
int main(int arg,char*argv[]{
李斯特;
nodo*n1=malloc(sizeof(nodo));
n1->dato=123;
n1->prox=NULL;
l、 primero=n1;
nodo*n2=malloc(sizeof(nodo));
n2->dato=456;
n2->prox=NULL;
n1->prox=n2;
nodo*n3=malloc(sizeof(nodo));
n3->dato=78;
n3->prox=NULL;
n2->prox=n3;
nodo*n4=malloc(sizeof(nodo));
n4->dato=78;
n4->prox=NULL;
n3->prox=n4;
int-response=iesimo((lista*)l,2);
断言(响应=456);
返回0;
}
main.c:35:5:错误:无法转换为指针类型
int-response=iesimo((lista*)l,2);
在汇编函数中,我返回一个长类型。 我想知道这个问题的解决办法是什么 谢谢

与将传递的参数
l
强制转换为指向
lista
的指针不同,您需要使用与运算符
&
获取
l
的地址:

int response = iesimo(&l, 2); 

似乎您想要
iesimo(&l,2)阅读编译器告诉您的内容。
int response = iesimo(&l, 2);