小编Mic*_*yan的帖子

为什么有些人更喜欢"T const&"而不是"const T&"?

因此,我意识到const T&并且T const&它们是相同的并且都意味着对const T的引用.在这两种情况下,引用也是常量的(与指针不同,引用不能被重新分配).我观察到,在我有点经验的情况下,大多数C++程序员都会使用const T&,但我遇到过一些使用过的人T const&.我const T&之所以使用它只是因为我学到了这一点,所以T const&对我来说看起来有点滑稽.您使用您使用的变体的原因是什么?你们中的任何一个人是否在一个组织工作,其编码标准要求使用一种变体而不是另一种变体?

编辑
根据答案,看来在两者之间进行选择的一个原因是你是想要像编译器(从右到左)还是像英语(从左到右)那样阅读它.如果像编译器一样读取它,则"T const&"读作"&(引用)const(到常量)T(类型T)".如果从左到右读取它像英语,则"const T&"被读作"以引用形式存在的T类型的常量对象".我更喜欢像英文散文一样阅读它,但我当然可以通过编译器的方式来理解它.

没有人回答组织或编码标准问题,但我强烈怀疑大多数组织不会强制要求一个,尽管他们可能会努力保持一致性.

c++ syntax types pointers reference

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

ISO/IEC网站和C和C++标准的收费

ISO C标准(ISO/IEC 9899)和ISO C++标准(ISO/IEC 14882)不在线发布; 相反,必须为每个标准购买PDF.我想知道这背后的理由是什么......对于C和C++编程语言来说,这些语言的权威规范是不是免费提供并且可以在线搜索,这对它没有害处吗?这是否鼓励使用可能不准确,非权威的来源获取有关这些语言的信息?

虽然我知道在开发C和C++标准方面付出了很多时间和精力,但我仍然对为规范收费的选择感到有些困惑.该OpenGroup的基本规范,例如,可在网上免费; 他们通过收取认证来赚钱.有谁知道为什么ISO标准委员会不会在证明标准合规性方面获得收入,而不是为这些文件收费?另外,有没有人知道ISO标准委员会看起来非常糟糕的网站是否有意这样看?就好像他们不希望人们访问和购买规范一样.

最后一件事...... C和C++标准通常被描述为"开放标准"......虽然我意识到这意味着任何人都被允许实施标准,是否应该修改"开放"的定义?为标准收费而不是公开提供似乎与开放精神相反.

PS我有ISO/IEC 9899:1999和ISO/IEC 14882:2003的副本,所以请不要谈论便宜或任何东西......虽然如果你想说这些东西,你可能想要考虑高中,本科生和研究生可能没有那么多额外的现金.此外,你可能想要考虑一个事实,即ISO网站真的很粗略,他们甚至不会告诉你成本,直到你进行结账...真的不鼓励人们去拿一份,现在做它?

编辑/评论
我认为,如果ISO标准委员会要从认证中获得收入,那么它会激励更小但更频繁地改变标准,而不是非常大的修订.它还会激励创建一个可实施的标准(我怀疑ISO C++委员会如果从认证中获得收入,就会首先引入"出口").

我找到了解决一个没有PDF在线的烦恼的解决方案....我已将我的标准副本上传到我的Google Docs中,这样我仍然可以从任何计算机访问它而无需携带它.

c c++ standards iso

41
推荐指数
5
解决办法
2899
查看次数

从头文件自动生成C++文件?

我有一堆带有各种类和函数声明的C++头文件.到目前为止,当我编写声明的类和函数的C++源文件实现时,我已经手动:

  1. 将声明从头文件复制到相应的源文件.
  2. 删除"class classname {"和匹配的"};"
  3. 在所有类函数的名称上添加"classname ::".
  4. 用"{}"替换函数声明后的分号.
  5. 删除关键字"虚拟"和"静态".

只有在完成所有工作之后,我才真正开始实现这些功能.我想知道是否有某个工具可以从".h"文件自动生成".cpp"文件,其中生成的".cpp"包含".h"文件中声明的函数的空存根(并没有给出内联定义).一个UNIX友好的命令行工具将是首选.谢谢.

更新:跨平台工具将是理想的.如果没有,我正在使用Mac OS X 10.6.

c++ code-generation

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

有没有办法限制STL地图的大小?

我想在C++中实现某种用作缓存的查找表.它旨在模拟我正在模拟的一块硬件.

密钥是非整数的,所以我猜测哈希是有序的.我无意发明轮子所以我打算用std::map它(尽管建议替代品是受欢迎的).

问题是,有没有办法限制哈希的大小来模拟我的硬件有限大小的事实?我希望哈希的insert方法返回错误消息,或者如果达到限制则抛出异常.

如果没有这种方式,我会在尝试插入之前检查它的大小,但这似乎是一种不太优雅的方式.

c++ stl map

17
推荐指数
2
解决办法
8192
查看次数

已安装Google Cloud SDK但无法访问gcloud

我正在尝试在OSX上安装Google Cloud SDK并执行此node.js教程(https://cloud.google.com/nodejs/getting-started/hello-world)并继续遇到gcloud未找到的问题.设置或我保存文件的位置可能只是简单的事情.

我在这里读了很多其他的帖子但是还没能解决这个问题.以下是所有步骤/问题:

我已经在开发控制台中创建了一个项目.

安装云sdk

MacBook-Pro-2:~ nico$ curl https://sdk.cloud.google.com | bash
Run Code Online (Sandbox Code Playgroud)

然后完成整个过程

Directory to extract under (this will create a directory google-cloud-sdk) (/Users/nico):

Do you want to help improve the Google Cloud SDK (Y/n)?  y

Modify profile to update your $PATH and enable bash completion? (Y/n)? y

Enter path to an rc file to update, or leave blank to use [/Users/nico/.bash_profile]:
Run Code Online (Sandbox Code Playgroud)

然后我试着验证:

MacBook-Pro-2:~ nico$ gcloud auth login
-bash: gcloud: command not found
Run Code Online (Sandbox Code Playgroud)

然后我进入了一个云sdk bin目录

MacBook-Pro-2:~ …
Run Code Online (Sandbox Code Playgroud)

macos shell terminal environment-variables google-cloud-platform

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

将Apache Portable Runtime交叉编译到iPhone

这是关于iPhone交叉编译的上一个问题的后续内容:
为官方iPhone SDK交叉编译基于Autotools的库

基本上,我正在尝试为iPhone编译Apache Portable Runtime(APR)版本1.3.8(最新版).我目前在配置步骤中遇到以下错误:

checking for working PROCESS_SHARED locks... configure: error: in `/Users/michaelsafyan/Downloads/apr-1.3.8':
configure: error: cannot run test program while cross compiling
See `config.log' for more details.

我通过"iphone3.1-configure --disable-dso --enable-threads"调用"configure"脚本,其中"iphone3.1-configure"是我编写的以下脚本,用于调用"配置"脚本:

#! /bin/bash

#
# Program  : iphone3.1-configure
# Authors  : Michael Aaron Safyan (michaelsafyan@gmail.com)
# Synopsis :
#            This program runs the "configure" script generated by the
#            GNU Autotools in order to cross-compile thirdparty libraries
#            for the iPhone 3.1 SDK. Run this script while in a …

iphone gcc autotools cross-compiling iphone-sdk-3.0

8
推荐指数
1
解决办法
6804
查看次数

关于"循环不变量"的观点,这些在行业中经常使用吗?

我正在回想起我在大学一年级的那一年(五年前),当时我参加了一个考试,从而完成了计算机科学的入门课程.有一个关于循环不变的问题,我想知道如果循环不变是真的有必要在这种情况下,或者如果问题只是一个坏榜样......问题是写一个迭代定义为一个阶乘函数,然后证明功能是正确的.

我为阶乘函数提供的代码如下:

public static int factorial(int x)
{
     if ( x < 0 ){
         throw new IllegalArgumentException("Parameter must be >= 0");
     }else if ( x == 0 ){
         return 1;
     }else{
         int result = 1;
         for ( int i = 1; i <= x; i++ ){
             result*=i;
         }
         return result;
     }
}
Run Code Online (Sandbox Code Playgroud)

我自己的正确性证明是一个案例的证明,并且每一个我断言它的定义是正确的(x!对于负值是未定义的,0!是1,x!是1*2*3 ......*x对于x)的正值.教授希望我用循环不变量来证明循环; 但是,我的论点是"按定义"是正确的,因为"x!"的定义 对于正整数x是"1 ... x的整数的乘积",而else子句中的for循环只是该定义的字面翻译.在这种情况下,真正需要一个循环不变量作为正确性的证明吗?在循环不变量(以及正确的初始化和终止条件)成为正确性证明之前,循环必须有多复杂?

另外,我想知道......行业中使用这种正式证据的频率是多少?我发现我的课程大约有一半是非常理论性和证据性的,大约一半是非常实施和编码,没有任何正式或理论材料.这些在实践中重叠多少?如果您确实使用了行业中的样张,那么何时应用它们(总是,只有它很复杂,很少,从不)?

编辑
如果我们自己,相信这一块的代码是正确的,可以说服别人(非正式)它是正确的,并有到位的单元测试,以被正确性的形式证明需要什么样的程度?

language-agnostic

6
推荐指数
2
解决办法
828
查看次数

是否有任何标准注释来指示Java中的nothrow语义?

我想将Java中的接口方法记录为不允许传播异常,并进行某种形式的静态分析,以验证此方法的实现捕获并处理可能传播给它的任何异常。遵循某种思路@NoThrow

例如,我希望能够写:

interface SomeServiceProviderInterface {
   @NoThrow
   @NonNull
   SomeResult someComputation();
}
Run Code Online (Sandbox Code Playgroud)

...并保证实现遵守该接口协定。是否已经有注释和静态分析工具?如果不是,有谁知道这是否可以通过注释处理器来实现(它可以查看代码是否包含try ... catch块吗?)和/或对实现此类操作有任何建议或建议?谢谢!

java annotations exception

6
推荐指数
1
解决办法
858
查看次数

为官方iPhone SDK交叉编译基于Autotools的库

背景

我正在编写一个针对几种不同手机的程序,包括iPhone.该计划取决于几个第三方图书馆.我很难为iPhone和iPhone模拟器交叉编译这些第三方库.这些库包括Apache Portable Runtime和GNUTLS,以及它们的依赖项.我希望构建的库最后以前缀"/opt/iphone-3.1","/ opt/iphone-3.0","/ opt/iphone-2.2.1","/ opt /iphone-modules3.1 "和"/opt/iphone-simulator-3.0"分别.

为了使交叉编译过程易于重复,我正在创建脚本来为每个目标平台调用"configure"脚本("iphone3.1-configure","iphone3.0-configure","iphone2.2.1" -configure","iphonesim3.1-configure"和"iphonesim3.0-configure").这是我遇到麻烦的地方.

我正在使用Mac OS X 10.6 Snow Leopard计算机和官方Xcode 3.2 + iPhone SDK 3.1.

状态

我目前有以下"iphone3.1-configure"脚本:

#! /bin/bash

#
# Program  : iphone3.1-configure
# Author   : Michael Aaron Safyan
# Synopsis :
#            This program runs the "configure" script generated by the
#            GNU Autotools in order to cross-compile thirdparty libraries
#            for the iPhone 3.1 SDK. Run this script while in a directory
#            containing an autotools "configure" script. Once run, …

iphone autotools cross-compiling gcc4

5
推荐指数
1
解决办法
6990
查看次数

Node.js承诺,异步或只是回调

你能否向初学者解释"承诺","异步"和"回调"之间的区别.这些术语如何相互关联?这些是一回事吗?不同的东西?我什么时候使用哪个?

asynchronous callback node.js promise

3
推荐指数
1
解决办法
3452
查看次数