标签: c

为什么C++向后兼容C?为什么没有一些"纯粹的"C++语言?

C和C++是不同的语言,我们知道blababla.

但如果这些语言不同,为什么仍然可以使用malloc或free这样的函数?我确信C++有各种各样的尘土飞扬的东西,因为C,但是由于C++是另一种语言,为什么不删除这些东西,使它变得不那么臃肿,更干净清晰?

是因为它允许程序员在没有OO模型的情况下工作,还是因为某些编译器不支持C++的高级抽象功能?

c c++ history

12
推荐指数
5
解决办法
5425
查看次数

如何用libcurl解析HTTP头?

我一直在环顾四周,我很惊讶似乎没有办法在libcurl中解析标题(这些日子似乎是http的规范C库).

我发现最接近的是邮件列表帖子,有人建议其他人搜索邮件列表档案.

由通过的libcurl提供的唯一的设施SETOPTCURLOPT_HEADERFUNCTION将进料头的响应在时间单行.

考虑到标题可以跨越多行,这似乎完全过于原始.理想情况下,这应该一次正确完成(最好由库本身完成),而不是留给应用程序开发人员不断重新发明.

编辑:

天真无效的一个例子,请参阅以下要点,其中包含libcurl代码示例和无法解析的正确形成的http响应:https: //gist.github.com/762954

c http libcurl http-headers

12
推荐指数
2
解决办法
7740
查看次数

缓存行对齐内存分配是否会得到回报?

我只知道对齐内存分配的基本思路.但我并不关心对齐问题,因为我不是汇编程序员,也没有MMX/SIMD的经验.而且我认为这是过早优化之一.

这些天人们越来越多地谈论缓存命中,缓存一致性,大小优化等.一些源代码甚至分配在CPU缓存行上显式对齐的内存.

坦率地说,我不知道我的i7 CPU的缓存行大小是多少.我知道大尺寸对齐没有坏处.但是没有SIMD会真的得到回报吗?

假设程序中有100000项100字节数据.访问这些数据是该计划最密集的工作.

如果我们改变数据结构并使所有100字节大小的数据按16字节对齐,是否可以获得显着的性能增益?10%?5%?

c c++ caching memory-management

12
推荐指数
3
解决办法
6941
查看次数

Botan vs OpenSSL vs Crypto ++用于加密

我想使用加密库来实现RSA,DSA等.任何人都可以建议如果你使用它哪个更好.

c c++ cryptography

12
推荐指数
1
解决办法
9734
查看次数

为数组使用动态内存分配

我怎么能对数组使用动态内存分配?

例如,下面是一个数组,其中我从.txt文件中读取单个单词并在数组中逐字保存:

码:

char words[1000][15];
Run Code Online (Sandbox Code Playgroud)

这里1000定义了数组可以保存的单词数,每个单词可以包含不超过15个字符.

现在我希望该程序应该为它计算的单词数量动态分配内存.例如,.txt文件可能包含大于1000的单词.现在我希望程序应该计算单词数并相应地分配内存.

由于我们不能使用变量代替[1000],因此我对如何实现逻辑完全空白.请帮助我这方面.

c memory arrays dynamic-memory-allocation

12
推荐指数
2
解决办法
7万
查看次数

C:epoll和多线程

我需要创建专门的HTTP服务器,为此我计划使用epoll sycall,但我想利用多个处理器/核心,我无法提出架构解决方案.ATM我的想法是跟随:用自己的epoll描述符创建多个线程,主线程接受连接并在线程epoll之间分配它们.但有更好的解决方案吗?我可以在高负载架构上阅读哪些书籍/文章/指南?我只看过C10K文章,但大多数链接到例子已经死了:(并且仍然没有关于这个主题的深入书籍:(.

谢谢你的回答.

UPD:请更具体,我需要材料和示例(nginx不是一个例子,因为它太复杂,并且有多个抽象层来支持多个系统).

c architecture high-load epoll

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

零长度数组

最近我遇到了一个结构定义,

struct arr {
    int cnt;
    struct {
        int  size;
        int *name;
    } list[0];
};
Run Code Online (Sandbox Code Playgroud)

现在我不知道list[0]被宣布的原因.我感兴趣的是为什么使用它.它有什么优势吗?如果是,那是什么?

c structure

12
推荐指数
2
解决办法
5220
查看次数

在gcc中使用-g和-O2选项

有没有人经历混合-g(调试符号)和-O2(最佳安全优化)与gcc编译器?
我必须调试分发给最终用户的发布程序的崩溃,这些程序可能会将我发回给核心文件.
我一直习惯称:

gdb << myprogram >> << core file >>

并看看问题出在哪里.现在我可以看到调用跟踪但没有调试符号我遇到了麻烦.

任何的想法?

c gcc

12
推荐指数
2
解决办法
4380
查看次数

用gcc扩展c编程语言

我想编写自己的编程语言作为c编程语言的扩展.我正在发明的整个编程语言只是简单的转换为有效的c代码.例如:

namespace TcpConnection {
    void* connect(char *addr)
}
Run Code Online (Sandbox Code Playgroud)

会转化为:

void* TcpConnection_connect(char *addr)
Run Code Online (Sandbox Code Playgroud)

所做的一切都是简单的名称替换.这只是我想提供的扩展的一个例子.另一个简单的扩展是函数重载(这将连接到函数名称末尾的参数类型.

在任何情况下,结果都是完全有效的C代码.有没有办法在不进入gcc代码的情况下这样做?

c compiler-construction gcc translation programming-languages

12
推荐指数
1
解决办法
1847
查看次数

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