我们想用CMAKE系统构建一个共享库.它是这样的:
lib/
CMakeLists.txt
src/
CMakeLists.txt
module/
CMakeLists.txt
module1.c
foo.c
Run Code Online (Sandbox Code Playgroud)
module1.c需要一些标准的共享库librt.我们有
add_library(module module1.c)
target_link_libraries(module rt)
Run Code Online (Sandbox Code Playgroud)
在module/子目录中.但仍然得到错误的东西librt是未知的.
如果我们想用C编写一个模块并且必须用C++编译它,可以用C++ g++开发一段没有任何自己的类的代码,只用C中的"全局/静态函数"吗?所以,简单地说,用C++编写代码C(只有很少的系统头改变等)
我们想要忽略一些文件,而不是通过git跟踪,我们无法弄清楚如何做到这一点.
我们有一些第三方C库已解压缩,我们在Git中有它.但是当你configure && make它,它会产生许多新文件.如何写入.gitignore跟踪源文件而不是新的东西.(这不像禁止*.o)
编辑:至少有12种文件类型.所以我们不想枚举,我们想要哪种类型,哪些不是.
在编译我的项目混合时C,C++我得到了这个错误(这在编译C++文件时):
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++locale.h:
In function ‘int std::__convert_from_v(__locale_struct* const&, char*, int, const char*, ...)’:
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++locale.h:70:3:
sorry, unimplemented:
function ‘int std::__convert_from_v(__locale_struct* const&, char*, int, const char*, ...)’
can never be inlined because it uses variable argument lists
Run Code Online (Sandbox Code Playgroud)
编译结束.
但是,当我手动编辑的文件
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++locale.h
,并删除inline修改之前,__convert_from_v它WORKS.
导致问题的函数头是inline最初的:
inline int
__convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)),
char* __out,
const int __size __attribute__ ((__unused__)),
const char* __fmt, ...)
Run Code Online (Sandbox Code Playgroud)
我想这样的功能不应该被标记为inline.是错误还是我做错了什么?[gcc 4.6.1,Ubuntu 11.10]
如果我是对的,在Linux(in C/C++, gcc/g++)上,可以使用read(2)或mmap(2)系统调用从常规文件中读取数据.
两个问题.read系统调用是否在mmap内部使用?什么时候比第二个快,反之亦然?
如果我没有记错的话,聚集索引会根据一些自定义顺序对磁盘上表的行进行物理排序。我假设表存储在文件中(也许每个表一个文件?)。好吧,然后假设某人在表中插入了“新行”,并且应该将其放置在开头。然后数据库需要在文件中物理移动整个表(所有行)吗?这不是太慢,还是有什么优化技术可以在插入后实现排序顺序?
请问,如何对g(fib)的评价完全严格?(我知道这个指数解决方案不是最优的.我想知道如何使递归完全严格 /如果可能/)
哈斯克尔
g :: Int -> Int
g 0 = 0
g 1 = 1
g x = g(x-1) + g(x-2)
main = print $ g 42
Run Code Online (Sandbox Code Playgroud)
因此它的运行速度与天真的C解决方案一样快:
C
#include <stdio.h>
long f(int x)
{
if (x == 0) return 0;
if (x == 1) return 1;
return f(x-1) + f(x-2);
}
int main(void)
{
printf("%ld\n", f(42));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
注意:此fibs-recursion仅用作超简单示例.我完全知道,有很多更好的算法.但肯定有递归算法,它们没有那么简单和有效的替代方案.
我们有几个WCF(数据)服务.由于我们的客户很少通过糟糕的网络连接连接到这些服务,我们希望确保所有流量都被压缩.因此,我们希望自动压缩每个请求和响应服务器.
我们现在使用IIS 8和.NET 4+.
我们怎样才能以最自然的方式做到这一点?(通过XML配置等)
是否有可能在纯函数中打印跟踪日志,如:
pure :: Int -> Int
pure x = do
<trace log>
return x*x
Run Code Online (Sandbox Code Playgroud)
我知道,这不是"Haskell干净",但GHC中没有任何有用的黑客攻击吗?
另一个微基准测试:为什么这个"循环"(用ghc -O2 -fllvm7.4.1 编译,Linux 64bit 3.2内核,重定向到/dev/null)
mapM_ print [1..100000000]
Run Code Online (Sandbox Code Playgroud)
C使用write(2)非缓冲系统调用时,比普通的简单for-cycle慢约5倍?我想收集Haskell陷阱.
即使这种缓慢的C解决方案也比Haskell快得多
int i;
char buf[16];
for (i=0; i<=100000000; i++) {
sprintf(buf, "%d\n", i);
write(1, buf, strlen(buf));
}
Run Code Online (Sandbox Code Playgroud)