小编mys*_*ste的帖子

C中的struct:'params'的错误存储大小未知

我对C有点新意,我正在处理一个我正在研究的项目有点麻烦.基本上我有以下文件:main.c,alarm.c,alarm.h

我在alarm.c中有一个结构声明,如下所示:

#define STRLEN 150;

struct alarmparams
{
    char time[STRLEN];
    char duration[STRLEN];
    char snooze[STRLEN];
    char port[STRLEN];
};
Run Code Online (Sandbox Code Playgroud)

在main.c我有:

#include <stdio.h>
#include <string.h>
#include "alarm.h"

int main(int argc, char *argv[])
{   
    struct alarmparams params;

    printf("%s, %s\n", params.time, params.duration);
}
Run Code Online (Sandbox Code Playgroud)

在alarm.h我有:

struct alarmparams;
Run Code Online (Sandbox Code Playgroud)

现在,当我去编译时,我收到以下错误:

error: storage size of ‘params’ isn’t known
Run Code Online (Sandbox Code Playgroud)

我已经查看了有关此错误的其他帖子,所以我已经对此进行了一些研究.我也尝试了一些建议的解决方案,它要么我得到完全相同的错误,要么我得到了更多的解决方案.我对如何解决这个问题感到很失望.

有什么我想念的吗?我是否错误地宣布了什么?

通常应该在头文件或c文件中声明结构?或者甚至重要吗?有什么不同:

struct foo {...};
Run Code Online (Sandbox Code Playgroud)

typedef struct foo {...};
Run Code Online (Sandbox Code Playgroud)

c struct

6
推荐指数
2
解决办法
2万
查看次数

在Haskell中旋转char Matrix图像

我正在为我的班级工作,其中一个要求是创建一个名为rotate90的函数.此功能基本上采用[[Char]]并顺时针旋转90度.

例如:

type Picture = [[Char]]
pic :: Picture
pic = [ "123",
    "456",
    "789" ]
Run Code Online (Sandbox Code Playgroud)

变成:

[ "741",
  "852",
  "963" ]
Run Code Online (Sandbox Code Playgroud)

到目前为止我的代码看起来像这样:

rotate90 :: Picture -> Picture
rotate90 (x:xs)
    | (x:xs) == []          = []
    | xs == [] && x /= []   = formRow ([[]]) (formCol x)
    | xs /= []              = formRow (rotate90 xs) (formCol x)


formCol :: [Char] -> [[Char]]
formCol y = [[a] | a <- y]

formRow :: [[Char]] -> [[Char]] -> [[Char]]
formRow …
Run Code Online (Sandbox Code Playgroud)

haskell list rotation matrix

1
推荐指数
1
解决办法
1667
查看次数

标签 统计

c ×1

haskell ×1

list ×1

matrix ×1

rotation ×1

struct ×1