警告:控制到达非空函数的末尾[-Wreturn-type]}

时间:2017-04-04 15:55:38

标签: c

c编程

代码:

struct battleship makeShip (int size, int pos)
{
    int i, j;
    int* body;
    body = (int*) malloc (size * sizeof(int));
    for (i = pos; i < (pos + size); i++){
        for (j=0; j < size; j++){
            body[j] = 1;
        }
    }
}

如果我尝试添加返回0,则不确定导致错误的原因;我明白了:

错误:返回&#39; int&#39;来自具有不兼容结果的函数       类型&#39; struct battleship&#39;     返回0;

2 个答案:

答案 0 :(得分:0)

你必须返回一艘战舰结构。

如果您不需要返回任何内容,只需更改:

;with cte as (
    select *, RowN = row_number() over (partition by batchid order by uid) from #yourbatch where subjectid in (0,1,2)
) select distinct BatchId from cte where RowN > 1

使用:

struct battleship

意味着该函数不返回任何内容。

考虑到你在这里分配了一些内存,你可能想要返回body的地址,这是一个指向int类型的指针。
在这种情况下,您的函数应该以:

开头
void

答案 1 :(得分:0)

struct battleship makeShip (int size, int pos)
{
    int i, j;
    int* body;
    body = (int*) malloc (size * sizeof(int));
    for (i = pos; i < (pos + size); i++){
        for (j=0; j < size; j++){
            body[j] = 1;
        }
    }
    struct battleship ship;
    ship.body = body;
    ship.size = size;
    ship.pos = pos;
    return ship;

}