小编ano*_*245的帖子

从Clojure Repl和Leiningen运行测试

作为clojure的新手,我使用leiningen创建了一个示例项目

lein new app first-project
Run Code Online (Sandbox Code Playgroud)

这给了我这个目录

.
??? doc
?   ??? intro.md
??? LICENSE
??? project.clj
??? README.md
??? resources
??? src
?   ??? first_project
?       ??? core.clj
??? target
?   ??? repl
?       ??? classes
?       ??? stale
?           ??? extract-native.dependencies
??? test
    ??? first_project
        ??? core_test.clj
Run Code Online (Sandbox Code Playgroud)

在不修改任何文件的情况下,我可以成功地完成唯一的失败测试

lein test
...
Ran 1 tests containing 1 assertions.
1 failures, 0 errors.
Tests failed.
Run Code Online (Sandbox Code Playgroud)

但是我无法使用运行测试从REPL做同样的事情

lein repl
first-project.core=> (use 'clojure.test)
nil
first-project.core=> (run-tests)

Testing first-project.core

Ran 0 tests containing 0 …
Run Code Online (Sandbox Code Playgroud)

clojure leiningen

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

变体宏和尾随逗号

我试图在C中进行面向对象,并希望为符号设置一个语法糖宏

object->vtable->method(object, arg1, arg2)
Run Code Online (Sandbox Code Playgroud)

send(object, method, arg1, arg2)
Run Code Online (Sandbox Code Playgroud)

不幸的是,当一个方法没有参数时,会出现尾随的逗号问题

send(object, method)
Run Code Online (Sandbox Code Playgroud)

object->vtable->method(object, )
Run Code Online (Sandbox Code Playgroud)

是否有任何便携式(无##__VA_ARGS__或Visual Studio)方式?

我想出了一个,但我需要交换对象和方法

#define FIRST_ARG_(N, ...) N
#define FIRST_ARG(args) FIRST_ARG_(args)
#define send(msg, ...) \
 FIRST_ARG(__VA_ARGS__)->vtable->msg(__VA_ARGS__)
Run Code Online (Sandbox Code Playgroud)

许可证

send(method, object)
send(method, object, arg1, arg2)
Run Code Online (Sandbox Code Playgroud)

编辑

在下面两个很好的答案的帮助下,我将使用这些宏来完成.它最多可以处理16个参数,但可以轻松扩展

#define SEND_NO_ARG(obj, msg) obj->vtable->msg(obj)
#define SEND_ARG(obj, msg, ...) obj->vtable->msg(obj, __VA_ARGS__)

#define GET_18TH_ARG(arg1, arg2, arg3, arg4, arg5, \
    arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, \
    arg16, arg17, arg18, ...) arg18
#define SEND_MACRO_CHOOSER(...) \
    GET_18TH_ARG(__VA_ARGS__, …
Run Code Online (Sandbox Code Playgroud)

c c-preprocessor variadic-macros

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

如何在Windows上过滤到特定域名的网络连接

我想实现一个Windows服务,该服务默认阻止/允许所有网络连接和白名单/黑名单特定域名(如google.com).

我查看了Windows过滤平台,但似乎我不能过滤域名,只能在精确的IP上过滤.问题是与域名相对应的IP可能会随时间而变化,并且一个域名可能有多个.

如何对域名进行过滤?

.net c# windows winapi wfp

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

标签 统计

.net ×1

c ×1

c# ×1

c-preprocessor ×1

clojure ×1

leiningen ×1

variadic-macros ×1

wfp ×1

winapi ×1

windows ×1