小编App*_*015的帖子

如何检查C中的结构类型

我在 C 中创建了一个简单的列表结构,它使用 void* 指针保存任何类型的数据,例如:

struct node
{
    void *the_data;
    node *next;
};
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但我有一些列表,例如,一个列表中只包含 struct_a,另一个列表中只包含 struct_b。我需要在单个 if() 问题中检查列表的第一个元素是 struct_a 类型还是 struct_b 类型,以便我知道该列表保存的数据。这该怎么做?谢谢

编辑:

我想出了一个简单的解决方案,现在已经足够解决这个问题了,不知道它是否是最好的:

struct node
{
    void *data;
    node *next;
}
Run Code Online (Sandbox Code Playgroud)

我添加了一个“描述符”节点,其中包含第一个节点的地址和有关类型的信息:

struct list_desc
{
    node *list;
    short int type;
}
Run Code Online (Sandbox Code Playgroud)

我会将它与一些宏一起使用,例如

#define __data_type1 10
#define __data_type2 20
Run Code Online (Sandbox Code Playgroud)

所以稍后我可以比较 if( struct.type == __data_tipe1 ) 等...

c

4
推荐指数
2
解决办法
9342
查看次数

构造仅用于计算表达式

我有一个异步返回字符串的异步函数,我在测试方法中调用该函数并抛出计算表达式,可能的解决方法是什么?

代码

let requestDataAsync (param: string) : Async<string> = 
    async {
        Console.WriteLine param
        return "my result"
    }
Run Code Online (Sandbox Code Playgroud)

测试代码

[<TestMethod>]
member this.TestRequestDataAsync() =
    let! result = requestDataAsync("some parameter")

    Console.WriteLine(result)
    Assert.IsTrue(true)
Run Code Online (Sandbox Code Playgroud)

此行错误 let! result = requestDataAsync("some parameter")

此构造只能在计算表达式中使用

问题,如何等待并显示异步函数的结果?

f#

4
推荐指数
2
解决办法
356
查看次数

令牌签名无效错误

我抛出了这个错误

com.auth0.jwt.exceptions.SignatureVerificationException:使用算法验证时令牌的签名无效:HmacSHA256

private static String SECRET = "some secret...";

public static DecodedJWT verify(String token) throws JWTVerificationException, UnsupportedEncodingException {
    JWTVerifier verifier = JWT.require(Algorithm.HMAC256(SECRET))
            .withIssuer("auth0")
            .acceptLeeway(1)
            .acceptExpiresAt(5 * 60)
            .build();

    return verifier.verify(token);
}
Run Code Online (Sandbox Code Playgroud)

这个秘密有什么问题吗,在网站jwt.io上我点击64编码的秘密基地然后它变成蓝色.

我尝试使用https://www.base64encode.net在base 64编码我的秘密,但同样的问题.请指教.

java jwt

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

F#中的选择类型

我在选择结构上遇到一些错误,需要帮助修复代码。

错误是

“ if”表达式需要具有“ Choice”类型才能满足上下文类型要求。目前它的类型是'bool'。

let safeDiv num den : Choice<string, bool> = 
    if den = 0. then
        Choice1Of2 = "divide by zero"
    else 
        Choice2Of2 = (num/den)


printfn "%s" (safeDiv 15. 3.).Choice1Of2
Run Code Online (Sandbox Code Playgroud)

f#

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

标签 统计

f# ×2

c ×1

java ×1

jwt ×1