小编Jos*_*shD的帖子

采访Hello World解释

这个经典的ioccc条目是一个用C语言编写的Hello World程序.任何人都可以解释它是如何工作的吗?

原始代码(语法突出显示故意丢失):

int i;main(){for(;i["]<i;++i){--i;}"];read('-'-'-',i+++"hell\
o, world!\n",'/'/'/'));}read(j,i,p){write(j/p+p,i---j,i/i);}

稍微清洁一点:

int i;
main()
{
  for ( ; i["]<i;++i){--i;}"]; read('-' - '-', i++ + "hello, world!\n", '/' / '/'));
}

read(j, i, p)
{
  write(j / p + p, i-- - j, i / i);
}
Run Code Online (Sandbox Code Playgroud)

c obfuscation

27
推荐指数
3
解决办法
3794
查看次数

前向声明对编译时间有多大影响?

我对一些研究或经验数据非常感兴趣,这些数据显示了两个c ++项目之间的编译时间的比较,除了一个在可能的情况下使用前向声明而另一个使用none之外.

与完全包含相比,转发声明会如何彻底改变编译时间?

#include "myClass.h"
Run Code Online (Sandbox Code Playgroud)

class myClass;
Run Code Online (Sandbox Code Playgroud)

有没有研究可以检验这一点?

我意识到这是一个模糊的问题,很大程度上取决于项目.我不希望得到答案的难数.相反,我希望有人可以指导我做一个关于此的研究.

我特别担心的项目有大约1200个文件.每个cpp平均包含5个头.每个标头平均包含5个标头.这回归了大约4个层次.似乎对于编译的每个cpp,必须打开和解析大约300个头文件,有时多次.(包含树中有许多重复项.)有警卫,但文件仍然打开.每个cpp都是用gcc单独编译的,所以没有头缓存.

为了确保没有人误解,我当然主张在可能的情况下使用前瞻性声明.但是,我的雇主禁止他们.我试图反对这个立场.

感谢您提供任何信息.

c++ compilation

22
推荐指数
4
解决办法
6881
查看次数

使用重复元素生成列表的排列

在Python中,使用itertools模块生成列表的所有排列非常简单.我有一种情况,我使用的列表只有两个字符(即'1122').我想生成所有独特的排列.

对于字符串'1122',有6个唯一的排列(1122,1212,1221等),但itertools.permutations将产生24个项目.仅记录唯一排列很简单,但是由于考虑了所有720个项目,因此收集它们所需的时间要长得多.

是否有一个函数或模块在生成排列时会考虑重复的元素,所以我不必自己编写?

python permutation

19
推荐指数
2
解决办法
5036
查看次数

C#中的错误C++程序员行为

可能重复:
对于有经验的C++程序员来说,C#开发中最常见或最严重的错误

我是一名很长时间的C++程序员,即将开始从事C#项目.

要注意哪些概念上的变化,最重要的是,我应该避免在C#中通常用C++做什么?C++程序员给C#带来了哪些坏习惯会丢失?

我有一份我打算阅读的C#书籍清单.我希望通过其他程序员的经验来增强这一点,因为我可能会犯同样的错误; 我想在它发生之前预防.

c# c++

15
推荐指数
3
解决办法
2353
查看次数

使用LDAP进行SVN用户身份验证

我有一个SVN服务器,我想使用我们的LDAP服务器进行用户身份验证.现在我正在为每个存储库指定用户名和密码,这工作正常,但更多人决定使用此服务器.我真的不应该访问他们的密码.我想使用LDAP来验证用户身份,我想授予整个域的访问权限,而不是单独指定用户.

一些(可怕的)细节:

  • SVN正在Windows XP机器上运行.:-(
  • 我有svnserve和http访问,但后者是一个非常小的问题.
  • 我有最少的LDAP知识(这可能就是我问这个问题的原因.)

最后,如果这完全是一个坏主意,或者如果有更好的解决方案,我会有兴趣听到它.

谢谢!

svn ldap

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

类型字段是纯粹的邪恶吗?

正如在12.2.5节中的c ++编程语言第3版中所讨论的那样,类型字段倾向于创建比使用虚函数和多态的等效代码更不通用,容易出错,更不直观和更少可维护的代码.

举个简短​​的例子,下面是如何使用类型字段:

void print(const Shape &s)
{
  switch(s.type)
  {
  case Shape::TRIANGE:
    cout << "Triangle" << endl;
  case Shape::SQUARE:
    cout << "Square" << endl;
  default:
    cout << "None" << endl;
  }
}
Run Code Online (Sandbox Code Playgroud)

很明显,这是一个噩梦,因为为此增加了一种新的形状,十几种类似的功能会容易出错并且很费劲.

尽管存在这些缺点以及TC++ PL中描述的那些缺点,但是有没有这样的实例(使用类型字段)比使用虚函数的语言特性更好的解决方案?或者这种做法应该被列为纯粹的邪恶?

现实的例子比人为的例子更受欢迎,但我仍然对人为的例子感兴趣.另外,你有没有在生产代码中看到这一点(即使虚拟功能会更容易)?

c++ code-organization

4
推荐指数
1
解决办法
927
查看次数

标签 统计

c++ ×3

c ×1

c# ×1

code-organization ×1

compilation ×1

ldap ×1

obfuscation ×1

permutation ×1

python ×1

svn ×1