标签: errata

数组语法与指针语法和代码生成?

Richard Reese所着的"理解和使用C指针"一书中,它在第85页说

int vector[5] = {1, 2, 3, 4, 5};
Run Code Online (Sandbox Code Playgroud)

生成的代码与生成的代码vector[i]不同*(vector+i).该表示法vector[i]生成从位置向量开始的机器代码,从该位置移动 i位置,并使用其内容.符号*(vector+i)生成的机器代码从位置开始vector,添加 i到地址,然后使用该地址的内容.结果相同,生成的机器代码不同.这种差异对大多数程序员来说很少有意义.

你可以在这里看到摘录.这段经文是什么意思?在什么情况下,任何编译器都会为这两个编译器生成不同的 "移动"与基础之间是否存在差异,而"添加"基数是否存在差异?我无法让它在GCC上工作 - 生成不同的机器代码.

c arrays pointers pointer-arithmetic errata

54
推荐指数
5
解决办法
3306
查看次数

Apress Pro Asp.net MVC框架3 - SportsStore编辑产品不工作?

G'day All,有没有人购买了Apress Pro Asp.net MVC Framework 3的ALPHA并创建了SportsStore?我不能为我的生活编辑产品并成功更新数据库?没有错误显示和单元测试都运行,但没有成功的'编辑',即我更改一些细节,点击保存,它报告成功 - 然后检查结果,没有发生任何事情?通过SportsStore工作时有没有其他人发现这个?任何建议将不胜感激.

干杯.

frameworks errata asp.net-mvc-3

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

Pro Javascript设计模式勘误表?

任何人都可以确认Pro Javascript设计模式第3章中的这些样本是有缺陷的,如果是这样的话,从根本上来说 - 它们是否比在JavaScript中产生"类"常量的预期目标还要多一两个错误?谢谢.

var Class = (function() {

  // Constants (created as private static attributes).
  var UPPER_BOUND = 100;

  // Privileged static method.
  this.getUPPER_BOUND() {//sic
    return UPPER_BOUND;
  }

  ...

  // Return the constructor.
  return function(constructorArgument) {
    ...
  }
})();

/* Usage. */

Class.getUPPER_BOUND();

/* Grouping constants together. */

var Class = (function() {

  // Private static attributes.
  var constants = {
    UPPER_BOUND: 100,
    LOWER_BOUND: -100
  }

  // Privileged static method.
  this.getConstant(name) {//sic
    return constants[name];
  }

  ...

  // …
Run Code Online (Sandbox Code Playgroud)

javascript design-patterns errata

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

为了迭代数组我们应该使用size_t还是ptrdiff_t?

在这篇由Andrey Karpov撰写的题为"关于size_tptrdiff_t"的博客文章中,他展示了一个例子,

for (ptrdiff_t i = 0; i < n; i++)
  a[i] = 0;
Run Code Online (Sandbox Code Playgroud)

但是,我不确定这是否正确,似乎应该如此

for (size_t i = 0; i < n; i++)
  a[i] = 0;
Run Code Online (Sandbox Code Playgroud)

它是否正确?

我知道我们也应该使用类似的东西memset,但让我们完全避免这种情况.我只问这种类型

c pointers size-t errata ptrdiff-t

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

有一个声明 Stack&lt;T&gt;(); 对于类模板内有效的默认 ctor

我看到这个关于 SO 的问题的答案,该问题与类模板的默认构造函数的声明相关,该声明表示由于CWG1435,以下代码不是有效的 C++ :

template <class T> class Stack {
public:
  Stack<T>(); //IS THIS VALID?
};

Run Code Online (Sandbox Code Playgroud)

而另一个答案说上面的例子是有效的C++。有两个来源可以证明上述示例有效:

  1. 注入的类名

否则,它被视为类型名称,相当于模板名称后跟 <> 中包含的类模板的模板参数

  1. CppCon 会议上, Dan Saks基本上展示了一个非常相似的例子。

因此,正如我们所看到的,两个链接的答案提出了相反的主张,我不知道哪一个是正确的。所以我的问题是这两个答案哪个是正确的。也就是说,声明Stack<T>();是否有效 C++。

PS:我问的是 C++11 及以后的现代 C++ 含义。

c++ templates errata class-template

3
推荐指数
2
解决办法
173
查看次数