C/C++
文章平均质量分 65
zeloas
这个作者很懒,什么都没留下…
展开
-
c++编码规范 - 前置声明
之所以讨论这个问题,是在使用inline namespace的时候,遇到了模块代码中的头文件中使用了前置声明,导致了代码修改时, 修改一个模块的时候,需要同时修改其他的模块的代码, 也不能通过namespace aliase 进行处理, 符合下面确定缺点2的部分的说明。有不少文章是推崇使用前置声明的,这边判断下来各有功过吧,libc++ 对前置声明还是有不少的使用的,比如iosfwd头文件就是个很好的说明。下面规则来源:https://zh-google-styleguide.readthedocs.原创 2021-02-02 22:37:46 · 521 阅读 · 0 评论 -
C++ int转换为string
我们可以使用 C 标准库或C++库函数/类将 int 转换为字符串。"现代"C++风格的方式我们可以使用C++标准库中的std::to_string(), 这个是自11年以来添加到C++标准库中的。如果项目使用C++ 11 和之后的标准,建议使用这个方法。std::string to_string( int value );在标准头中定义,将数值转换为 std::string。1) 具有与 std::sprintf(buf、"%d",value)一样,将带符号的十进制整数转换为将生成字符串的功能翻译 2021-01-10 23:26:24 · 57439 阅读 · 1 评论 -
ubuntu18.04 安装 clang-10
官方链接:https://apt.llvm.org/添加key:wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -添加源:sudo vim /etc/apt/source.list.d/llvm-10.listsudo apt update安装:sudo apt install clang-10# 安装 AST.h 等头文件sudo apt install libclang-10-dev配原创 2020-10-10 10:25:57 · 5264 阅读 · 2 评论 -
函数属性 __attribute__ ((constructor))和__attribute__ ((destructor))
函数属性constructor和destructor, 构造函数初始化属性init_priority函数属性功能__attribute__ ((constructor))会使函数在main()函数之前被执行__attribute__ ((destructor))会使函数在main()退出后执行功能范围函数属性__attribute__((constructor))和__attribute__((destructor))在可执行文件或者库文件里都可以生效与全局变量比较全局变量对象的原创 2020-06-16 23:13:37 · 766 阅读 · 0 评论 -
(翻译)设计Qt风格的C++的应用程序接口 (转)
"Designing Qt-Style C++ APIs" by Matthias Ettrich http://doc.trolltech.com/qq/qq13-apis.html 翻译这篇文章的目的不是让人了解Qt,而是让人试着学习点C++编程的软技能。我从原文中得到的一些风格上的体会,也希望你能从中有所收获.(译者注) 我们在Trolltech做了大量研究来改进Qt开发体验.在这篇转载 2008-05-13 14:45:00 · 1435 阅读 · 0 评论 -
scanf()函数用法小结(转载)
虽然有人说在大型程序设计中永远不要使用scanf(),但是对于习惯用C的人和参加ACM/ICPC的人,scanf()还是用的比较多的,而且用好了用起来也很方便 下面整理一点儿平时常需要用到而可能有些人一直理不清的一些知识 一般常识:scanf()函数的一般格式为:scanf("格式字符串",输入项首地址表)scanf的格式控制的一般形式为:%[*][宽度][F|转载 2008-05-12 21:37:00 · 6840 阅读 · 2 评论 -
创建动态2维vector (C++)
#include iostream>#include iomanip>#include vector>using namespace std;int main()...{ vectorvectorint> > a; for(int i=0; i5; i++) ...{ a.push_back(vectorint>()); for(int j=0;原创 2008-05-09 16:31:00 · 1310 阅读 · 1 评论 -
用 (*it).m 还是 it->m (转)
摘自《Extended STL》标准库要求,所有值类型为聚合类型的迭代器必须支持指针成员选取运算符(operator ->()),下面是使用该运算符的示例代码:struct X{ int x;};some_iterator si = . . .some_iterator si2 = . . .some_iterator end = . . .if( end != si && end转载 2008-04-25 12:25:00 · 824 阅读 · 0 评论 -
一个简单的随机数生成算法实现(C++)
#ifndef EASYRANDOM_INCLUDED#define EASYRANDOM_INCLUDEDstatic const int A = 48271;static const int M = 2147483647;static const int Q = M/A ;static const int R = M%A ;class Random...{public : ex原创 2008-04-14 16:22:00 · 5237 阅读 · 0 评论 -
C++中的namespace
namespace中文意思是命名空间或者叫名字空间,传统的C++只有一个全局的namespace,但是由于现在的程序的规模越来越大,程序的分工越来越细,全局作用域变得越来越拥挤,每个人都可能使用相同的名字来实现不同的库,于是程序员在合并程序的时候就会可能出现名字的冲突。namespace引入了复杂性,解决了这个问题。namespace允许像类,对象,函数聚集在一个名字下。本质上讲namespace...原创 2007-10-29 09:05:00 · 91470 阅读 · 24 评论 -
linux下的静态库和动态库的编译
每个程序实质上都会链接到一个或者多个的库。比如使用C函数的程序会链接到C运行时库,GUI程序会链接到窗口库等等。无论哪种情况,你都会要决定是链接到静态库(static libary)还是动态库(dynamic libary)。链接到静态库会使你的程序臃肿,并且难以升级,但是可能会比较容易部署。而链接到动态库会使你的程序轻便,并且易于升级,但是会难以部署。静态库静态库也就相当于是把一系列的objec原创 2007-10-18 14:55:00 · 2421 阅读 · 0 评论 -
用好binutils之gporf
gporf被称为GNU简档器,是binutils中的一个程序。这个程序可以帮我们找出程序运行时需要处理时间最长的函数。通过它我们可以有效的改善我们程序的效率。为了有效的使用我们的gprof工具,必须确保参数-pg编译希望监视的函数 ,用这个参数编译源代码,会为程序的每个函数插入对mcount自子例程的调用,当运用程序运行时,mcount子例程创建一个调用图表简档文件,即gmon.out,它包含了程原创 2007-10-17 10:12:00 · 1109 阅读 · 1 评论 -
C与C++的一些不同之处
以前也没多注意C和C++有什么差别,感觉C++没有类,模板和引用,那么C++就是C近几天特别注意了这方面的问题,发现以前想的还是有问题的。去掉了类,模板和引用的C++和C还是有一定的差别的。下面列了几点还多多指教函数原型在C++中函数原型是必须的,而C中是可选的在C中圆括号意味着前向原型声明,但在C++中就意味着函数没有原型例如int test();int main(){ int test(原创 2007-05-02 10:19:00 · 1849 阅读 · 2 评论 -
对linux中进程创建的一点理解(1)
前几天,我们操作系统老师讲了个关于用fork创建进程的问题。引用了如下的一个程序:#include #include #include int main(){ int pid; pid=fork(); if(pid { fprintf(stderr,"FORK FAILED/n"); exit(-1); } else if(pid==0) { execlp原创 2007-03-29 11:48:00 · 1081 阅读 · 0 评论