小编ish*_*ex2的帖子

类型约束中的函数

检查类型的(Just (+2)) <*> (Just (+2)) 我发现它有约束Num (a -> a),这对Num (a -> a)这里应该意味着什么感到困惑

(Just (+2)) <*> (Just (+2)) :: (Num a, Num (a -> a)) => Maybe (a -> a)
Run Code Online (Sandbox Code Playgroud)

haskell

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

具有 C11 标准的编译器接受的替代函数指针语法

我不确定这个函数指针类型声明语法,但它有效。语法就像声明一个普通的旧函数。

typedef struct Element GetChildCallback(void *userdata, usize parent, usize child_no);
Run Code Online (Sandbox Code Playgroud)

我找不到任何关于它是否符合标准或它可能有哪些缺点的信息。

我认为这仅适用于 typedef,所以我更进一步,发现这也适用于常规函数参数:

extern inline void dmpstrn(const char *t, usize n, int printer(const char *fmt, ...));

inline void dmpstrn(const char *t, usize n, int printer(const char *fmt, ...)) {
    usize len = strlen(t) > n ? n : strlen(t);
    printer("\"");
    for (usize i = 0; i < len; i += 1) {
        if (t[i] == '\n') 
            printer("\\n");
        else
            printer("%c", t[i]);
    }
    printer("\"\n");
}

// ...

int main() {
    dmpstrn("Hello\nworld", UINT64_MAX, …
Run Code Online (Sandbox Code Playgroud)

c typedef function-pointers implicit-conversion function-declaration

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