我是第一次使用嵌入式C语言.虽然我的C是生锈的,但我可以阅读代码,但我并没有真正理解为什么某些行是这样的.例如,我想知道变量是true还是false并将其发送回另一个应用程序.原始实现者不是将变量设置为1或0,而是选择0xFF.
他试图将它设置为地址空间吗?或者为什么将布尔变量设置为255?
我正在通过projecteuler.net上的问题来学习如何在Erlang中编程,并且我正在努力创建一个可以在不到一分钟内创建低于200万的所有素数的素数生成器.使用顺序样式,我已经编写了三种类型的生成器,包括Eratosthenes的Sieve,并且它们都没有表现得足够好.
我认为一个并发的Sieve会很好用,但我收到的是bad_arity消息,我不知道为什么.有关我遇到问题的原因或如何正确编码的任何建议?
这是我的代码,注释掉的部分是我试图让事情并发的地方:
-module(primeserver).
-compile(export_all).
start() ->
register(primes, spawn(fun() -> loop() end)).
is_prime(N) -> rpc({is_prime,N}).
rpc(Request) ->
primes ! {self(), Request},
receive
{primes, Response} ->
Response
end.
loop() ->
receive
{From, {is_prime, N}} ->
if
N From ! {primes, false};
N =:= 2 -> From ! {primes, true};
N rem 2 =:= 0 -> From ! {primes, false};
true ->
Values = is_not_prime(N),
Val = not(lists:member(true, Values)),
From ! {primes, Val}
end,
loop()
end.
for(N,N,_,F) -> [F(N)];
for(I,N,S,F) when I … 老实说,我认为答案是"不"; 但是,我想得到第二个意见.基本上,我需要一个微控制器设备向另一个发送稳定信号,但它们之间的通信是使用RS232.因此,我认为我必须创建/更新通信消息,以使其按照我的意愿行事.
你怎么看?