微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!
coding-style专题提供coding-style的最新资讯内容,帮你更好的了解coding-style。
上次我检查过,说你在ANSI C编码等于说“这是符合C99标准的代码而没有别的东西”.现在有了C11和C 11,这种区别仍然存在吗?它还有某种含义吗? 历史上,“ANSI C”用于表示“标准C”,即C89,与“K& R C”和编译器 – 编写者发明的各种预标准变体形成对比.这就是第二版的原因. “C编程语言”的封面上有一个大的红色“ANSI C”标记. 然后一段时间“ISO C”用于表示“新标准C
我有一个带有两个成员变量的C类 std::map<int, Node*> a; 和 std::set<Node*> b; 我大学使用的样式检查器要求在类的构造函数中初始化所有成员变量.如何将这些成员变量a和b初始化为它们所在类的构造函数中的空? 像这样: class A { public : A() : s(), m() { } std::set< int
免责声明:我试图搜索类似的问题,但这回复了每一个C问题……我也会感激任何可能提出更好标题的人. C中有两个显着的循环结构:while和for. >我故意忽略了do … while结构,它是无与伦比的 >我知道std :: for_each和BOOST_FOREACH,但不是每个循环都是一个 现在,我可能有点紧张,但它总是让我纠正这样的代码: int i = 0; while ( i < 5) {
我觉得C中的三分指针被视为“坏”.对我来说,有时使用它们是有道理的. 从基础开始,单指针有两个目的:创建数组,并允许函数更改其内容(通过引用传递): char *a; a = malloc... 要么 void foo (char *c); //means I'm going to modify the parameter in foo. { *c = 'f'; } char a; foo(&a
我真正想要的是一个|| =运算符. old_value = old_value || possible_new_value; old_value ||= possible_new_value; 第二行是编译器错误(c没有|| =运算符). 那么我的其他选择是什么? old_value += possible_new_value; old_value |= possible_new_value; 虽
“传统”C类(只是一些随机声明)可能类似于以下内容: class Foo { public: Foo(); explicit Foo(const std::string&); ~Foo(); enum FooState { Idle, Busy, Unknown }; FooState GetState() const; bool GetBar() co
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Function_Names#Function_Names Regular functions have mixed case; accessors and mutators match the name of the variable: MyExcitin
编译QT项目时使用的警告级别是多少? 当我使用W4编译时,我收到了很多警告,例如: C4127: conditional expression is constant 我应该在W3编译,还是找到其他方法来处理W4中的警告,例如:添加新的头文件并使用编译指示(此处提到C编码标准:101规则,指南和最佳实践). 你的做法是什么? 谢谢. 我遇到了几年前你遇到的完全相同的问题,那就是将编译器设置为4级警
所以我使用Qt很多与我的发展和爱它.通常使用Qt对象的设计模式是使用新的对象进行分配. 所有的例子(特别是由Qt设计器生成的代码)绝对不会检查std :: bad_alloc异常.由于分配的对象(通常是小部件等)很小,这几乎不是一个问题.毕竟,如果你没有分配20个字节的东西,那么赔率可以解决这个问题. 目前,我已经采用了一种在try / catch中包装“大”(大于一页或两个大小)的策略.如果失败
我总是在viewDidLoad方法中看到示例代码,而不是说 someInstanceVar = [[Classname alloc] init]; 他们总是去 Classname *tempVar = [[Classname alloc] init]; someInstanceVar = tempVar; [tempVar release]; 为什么是这样?是不是完全相同的事情,只是更长? 简短的
我正在寻找一种可读性,优雅的方式来执行C中的以下内容,这里显示在 Python中: for datum in data[1:]: do work. 有关数据的迭代器可能不支持随机访问迭代器,因此我不能仅仅使用: for (mIter = data.begin() + 1; mIter != data.end(); mIter++) 我想出的最好的是: iterable::iterator
我通常缩进公共:和私人:访问说明符如下: class Foo() { private: void Bar1() {} public: void Bar2() {} } Xcode似乎并不喜欢这样,但是,我觉得我做错了事情.什么是普通做法缩进私人:和公众:? 宗教问题:-)你会得到很多不同的答案. 我说:只要你是一贯的,你就喜欢
面向对象的程序员似乎很有趣.他们不仅每两年处理重大框架修订,每五年都会处理新的和改进的语言,还可以处理针对其编程风格量身定做的设计实践.从测试驱动开发到设计模式,面向对象的程序员有很多需要跟上的. 相比之下,C编程世界似乎更加镇静.该语言的最后一个修订是1999年,下一个修订可能远远不够令人印象深刻. K& R第二版仍然是许多人的好介绍性文本,尽管现在二十岁. 如果我们作为C程序员已经开发和改进了
T *p = new T(); 对于堆上的指针,可能会有灾难性的操作, p++; // (1) scope missed p = new T(); // (2) re-assignment 这将导致内存泄漏或由于删除错误而导致的崩溃.除了使用智能指针,总是使堆指针成为const; T* const p = new T(); // now "p" is not modifiable 这个问题在于
我正在查看一些专有的源代码:使用库的示例程序. 代码用C和C编写,使用make构建系统. 每个文件都以[]:/ * [] * /的源文件和#[]#的makefile文件结尾.这可能是什么原因? 该代码是使用GCC编译用于ARM的,使用扩展名. 最有可能是某种自动扩充的占位符. 通常,像macrodef(或其中一个源代码控制过滤器)会将这些项目扩展为包含一些相关的文本.由于通常只有注释保护的括号才能
我知道这是程序员中一个相当有争议的问题,但是当开发我喜欢我的IDE来将开放的大括号放在方法/接口/控制声明下方时,为了说明的目的: 这是Xcode如何自动生成骨架方法与{在结尾: – -(void) isTrue:(BOOL)input { if(input) { return YES; } else { return NO; } }
最近,我一直在开发一个在我的代码中做许多事情的做法:const: (1)功能的论据,我知道永远不会改变.例如.: void foo (const int i, const string s) ^^^^^ ^^^^^ (2)返回类型为const.例如.: struct A { ... const int foo () { return ...; } ^^^^
我被教导要将类定义和代码分开. 然而,我看到人们经常会在标题中包含一些代码的情况,例如简单的访问方法返回变量的引用. 你在哪里画线? 一般来说,您希望编译器内联或模板化的代码.在任何一种情况下,代码必须可用于编译器在任何地方使用,所以你别无选择. 但是,请注意,放置在头文件中的代码越多,编译所用的代码越长,并且您最终会触摸头文件的频率越高,从而导致缓慢构建的连锁反应:)
Consider the two code segments below. Which one is better and Why? If you have any other idea, please do mention. Where can I find answers to coding practices like these? If you are aware of any book
根据文档,Objective-C中的类的指定的初始化程序必须调用其基类的指定的初始化程序. 另一个规则是二次初始化器必须调用自己的类的指定的初始化器. 但是如果遵循第二条规则,为什么指定的初始化程序不能在其基类中调用二次初始化程序?这个基本的二次初始化器最终将调用自己的级别的D.I.所以对象仍然会被正确的初始化,对吗? 差异似乎是谁选择缺省变量的默认值 – 你或你的基类. 我们来考虑NSSet.它