小编Jam*_* Ko的帖子

#ifdef vs #if - 作为启用/禁用特定代码段编译的方法更好/更安全?

这可能是一种风格问题,但我们的开发团队有一点分歧,我想知道是否有其他人对此事有任何想法......

基本上,我们有一些调试打印语句,我们在正常开发过程中关闭.我个人更喜欢做以下事情:

//---- SomeSourceFile.cpp ----

#define DEBUG_ENABLED (0)

...

SomeFunction()
{
    int someVariable = 5;

#if(DEBUG_ENABLED)
    printf("Debugging: someVariable == %d", someVariable);
#endif
}
Run Code Online (Sandbox Code Playgroud)

有些团队更喜欢以下内容:

// #define DEBUG_ENABLED

...

SomeFunction()
{
    int someVariable = 5;

#ifdef DEBUG_ENABLED
    printf("Debugging: someVariable == %d", someVariable);
#endif
}
Run Code Online (Sandbox Code Playgroud)

......哪些方法对你来说听起来更好?为什么?我的感觉是,第一个更安全,因为总有一些东西被定义,并且没有危险它可以破坏其他地方的其他定义.

c c++ if-statement coding-style c-preprocessor

109
推荐指数
9
解决办法
9万
查看次数

新的netstandardapp和netcoreapp TFM有什么区别?

我注意到NuGet最近添加了对与.NET Core相关的几个新TFM的支持,包括:

  • netstandard (1.0-1.5)
  • netstandardapp (1.5)
  • netcoreapp (1.0)

据我所知,netstandard.NET Core相当于便携式配置文件; 它允许您使用单个名字对象来定位多个平台,而不是明确地拼写出您支持的每个平台,例如portable-net45+netcore45+wp81.

同时,根据这个文档 netstandardapp更像是.NET Core中的控制台应用程序; 它代表任何.NET Core运行时(例如CoreCLR,CoreRT).

那究竟netcoreapp应该是什么?我在这里找到了它的跟踪问题,其中包括底部的评论,有点解释了区别是什么,但我没有得到它们之间的区别

NETStandard.Library + app主机

.NET Core基础安装

是.有人可以向我解释一下吗?

.net c# nuget .net-core asp.net-core

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

main()是否在C++中重载?

main()存在2个有效版本C++:

int main()  // version 1
int main(int argc, char **argv)  // version 2
Run Code Online (Sandbox Code Playgroud)

但两种重载都不能同时共存.为什么不?(潜在用例:从终端运行程序时,如果没有传递参数,则调用第一个版本,否则第二个版本被调用.)

编译器是否执行特殊检查以允许每个二进制文件只有一个版本?

c++ program-entry-point overloading

67
推荐指数
5
解决办法
8030
查看次数

我无法在git上删除远程主分支

我需要删除一个主分支,但事实证明它很难.我只想清理那个分支并开始新的.我从开发分支删除.我希望GitHub上的主人干净.

 # git push origin --delete master

> To https://github.com/mymasterb.git  ! [remote rejected] master
> (deletion of the current branch prohibited) error: failed to push some
> refs to 'https://github.com/mymaster.git'
Run Code Online (Sandbox Code Playgroud)

我如何简单地用新鲜的石板开始我的主人?

git github

62
推荐指数
3
解决办法
8万
查看次数

标准c库是否提供链表等数据结构?

标准C库实现,特别是glibc(GNU C库)提供链表,堆栈等.数据结构,还是我们必须自己滚动?

谢谢.

c gcc glibc data-structures

48
推荐指数
4
解决办法
5万
查看次数

动态的使用被认为是一种不好的做法吗?

在C#中,有人可以这样做:

MyClass myInstance        = new MyClass();
dynamic mydynamicInstance = myInstance;
Run Code Online (Sandbox Code Playgroud)

然后,调用一个方法,如:

//This method takes a MyClass argument and does something.
Caller.InvokeMethod(myDynamicInstance);
Run Code Online (Sandbox Code Playgroud)

现在,这将导致在运行时确定myInstance类型,如果它有效,Caller.InvokeMethod将正常调用.

现在,我的问题是,如果这被认为是一种不好的做法dynamic,特别是在以下情况下:

1)InvokeMethod使用内部反射实例化myDynamicInstance类型的另一个实例.

2)有一个抽象基类MyBaseClass和它的许多子类,包括MyBaseClass.如果我们InvokeMethod为所有这些派生类提供了许多重载方法,我们是否可以使用它来在运行时允许类型确定,然后通过方法重载(或对该类方法调用的后期绑定)进行适当的调用)?:

public abstract class MyBaseClass         {/*...*/}
public class MyClass        : MyBaseClass {/*...*/}
public class MyAnotherClass : MyBaseClass {/*...*/}

MyBaseClass myBaseClassRef = new MyClass();
dynamic myDynamicInstance  = myBaseClassRef;

Caller.InvokeMethod(myDynamicInstance);
Run Code Online (Sandbox Code Playgroud)

c# reflection dynamic

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

尽管JVM的进步,为什么Jython比CPython慢​​得多?

请不要发生火焰战争.我确实不是Java的粉丝,但我认为JVM是一个相当不错且优化得很好的虚拟机.它支持JIT,非常接近流行的CPU架构的共同点.我假设CPython运行时比相应的基于JVM的运行时更远离金属.

如果我的假设是正确的,那么有人可以向我解释为什么Jython与CPython相比会遭受如此重大的性能损失吗?我最初的假设是JVM只是为静态语言设计的,而且很难将动态语言移植到它上面.然而,Clojure似乎是这一论点的一个反例.

另一方面,IronPython似乎做得很好.我相信这两个项目的主要开发人员是相同的,所以一个代码设计和实现明显优于另一个的论点似乎不太可能.

我无法弄清楚具体原因是什么; 任何帮助将不胜感激.

python jvm jython

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

.NET Framework中使用了哪些设计模式?

.NET Framework中的哪些类实现了各种设计模式,如装饰器,工厂等?

.net design-patterns

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

VS 2017 RC在尝试调试xUnit测试时生成0x8000ffff错误

我正在尝试在VS 2017 RC中调试我的.NET Core xUnit测试.我通过Test Explorer窗口运行我的测试.在右键单击测试并选择"运行选定的测试"时,选择" 调试选定的测试 "不会:

我对如何克服这个问题感到很茫然.我尝试重新启动VS,执行干净的构建,删除.vs/文件夹,甚至更新到VS 2017的较新版本.但是,到目前为止没有任何工作.有没有人建议我如何解决这个问题?谢谢!

编辑:我的项目在这里有一个Git repo ,所以如果你想要你可以自由克隆它,看看你是否可以自己复制.测试组件在src/BasicCompiler.Tests/.

.net c# xunit visual-studio visual-studio-2017

28
推荐指数
1
解决办法
1277
查看次数

为什么console.log作为参数传递给forEach时不起作用?

这只是出于好奇,但是你们中的任何人都知道为什么这段代码不起作用?

[1, 2, 3, 4, 5].forEach(console.log);

// Prints 'Uncaught TypeError: Illegal invocation' in Chrome
Run Code Online (Sandbox Code Playgroud)

另一方面,这似乎工作正常:

[1, 2, 3, 4, 5].forEach(function(n) { console.log(n) });
Run Code Online (Sandbox Code Playgroud)

那么......?

javascript arrays foreach function

25
推荐指数
3
解决办法
7491
查看次数