我在 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 ) 等...
我有一个异步返回字符串的异步函数,我在测试方法中调用该函数并抛出计算表达式,可能的解决方法是什么?
代码
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")
此构造只能在计算表达式中使用
问题,如何等待并显示异步函数的结果?
我抛出了这个错误
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编码我的秘密,但同样的问题.请指教.
我在选择结构上遇到一些错误,需要帮助修复代码。
错误是
“ 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)