当存储"字节数组"(blobs ...)时,使用char或更好地使用unsigned char项目(unsigned char又名uint8_t)?(标准说sizeof两者都是1字节.)
它有关系吗?或者一个比另一个更方便或更普遍?也许,像Boost这样的图书馆会用到什么?
我有一个ViewModel用于枚举处理(实体框架中的实体很少).
1)哲学上,对这个ViewModel使用SINGLETON PATTERN是一个好习惯,因为它在所有应用程序中都很普遍,而且它在许多地方使用.
2)ViewModel(及相关ObjectContext)长时间存在不是问题吗?
谢谢!
当我运行这个Haskell片段时,它只能加载1个CPU.这两个f和g是非感,但不应该使用它时加载两个CPU?编译为ghc -O2 snippet.hs.
f x = 1 + (f $! x)
g x = 5 + (g $! x)
z = a `par` b `seq` a+b
where
a = f 3
b = g 5
main = do
print z
Run Code Online (Sandbox Code Playgroud) 在Haskell中如何实现套接字,管道和文件IO等低级内容?我猜这些IO方法在Haskell中不是原生的,但是Haskell会快速包装一些低级C库,是不是?
任务:"总计前15,000,000个偶数."
哈斯克尔:
nats = [1..] :: [Int]
evens = filter even nats :: [Int]
MySum:: Int
MySum= sum $ take 15000000 evens
Run Code Online (Sandbox Code Playgroud)
......但MySum需要很长时间.更确切地说,比C/C++慢大约10-20倍.
很多时候我发现,自然编码的Haskell解决方案比C慢10倍.我预计GHC是一个非常优化的编译器和任务,这样看起来并不那么难.
所以,人们会期望比C慢1.5-2倍.问题出在哪里?
这可以更好地解决吗?
这是我用它比较的C代码:
long long sum = 0;
int n = 0, i = 1;
for (;;) {
if (i % 2 == 0) {
sum += i;
n++;
}
if (n == 15000000)
break;
i++;
}
Run Code Online (Sandbox Code Playgroud)
编辑1:我真的知道,它可以用O(1)计算.拜托,抗拒.
编辑2:我真的知道,evens [2,4..]只是功能even可能是其他功能O(1),需要作为一个功能来实现.
我还在开始探索Haskell.我知道这个代码在IOmonad中"运行" .当它从l <- ...行到下一行时,IO - bind调用它.
人们可能会认为,因为Haskell 很懒,所以l从未评估过.但是" bind"总是评估上一个命令,是吗?因为程序产生"文件未找到"错误.
main = do
l <- mapM readFile [ "/tmp/notfound" ]
return ()
Run Code Online (Sandbox Code Playgroud) C++ 11中的gcc一个可以用某种方式标记一个函数(不是类方法),const因为它告诉它是纯粹的并且不使用全局内存而只使用它的参数吗?
我试过gcc的__attribute__((const)),这是正是我想要的.但是当在函数中触摸全局内存时,它不会产生任何编译时错误.
编辑1
请小心.我是指纯粹的功能.不是恒定的功能.GCC的属性有点令人困惑.纯函数只使用它们的参数.
如何将Visual C++(2010)控制台应用程序与由MinGW(*.a格式)创建的STATIC库链接?它与Visual C++ 2010兼容吗?
谢谢.
我有一个用MinGW,Eclipse C项目编译的C库.库包含许多模块,每个模块都可以进行测试.
什么是最好的方法(使用MACROS或其他东西)如何为这个库编写测试,在Eclipse/CDT IDE中编译运行它?
编辑:我见过有人用过
#ifdef TEST
int main(void)
{
...TEST LOGIC...
}
#endif
Run Code Online (Sandbox Code Playgroud)
但不知道如何将其插入Eclipse.
我extern "C" int ping(void)在C++"静态库"项目中有一个函数.现在,我想写一个简单的Hello-World C程序来调用这个函数int x = ping();.
我使用,g++ / gcc但我无法将C可执行文件与C++共享库链接.拜托,怎么能这样做?你能提供准确的gcc命令吗?
编辑:
g++ -c -static liba.cpp
ar rcs liba.a liba.o
gcc -o x main.o -L. -la
Run Code Online (Sandbox Code Playgroud)
得到:
./liba.a(liba.o):(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
Run Code Online (Sandbox Code Playgroud)
collect2:ld返回1退出状态