我想让它尽可能通用 - 例如尽可能多地处理.
由于版本3不向后兼容版本2,我想确保使用正确的打印语句.
如果您有任何疑问,请随时告诉我,并根据可用的(例如图书馆)分享与动态逻辑有关的相关知识.
假设我有一个脚本只能在版本1.x,或2.x或3.x下运行.
或者需要库A或库B的脚本.
谢谢!
编辑:
现在......当谈到Python(不像.Net)时,一些像SciPy,Google App Engine这样的库会让你紧紧抓住特定的版本.在Linux,Mac Os上,您可以在命令行上切换不同的Python安装.这就是我想避免混淆的原因 - 我想记住哪个脚本适用于哪个版本的Python以及它需要哪些库.我宁愿让它以人类可读的方式失败.
我的同事经验丰富的C++黑客转而使用.Net.他们无意中犯的一个错误就是编写如下代码:
catch(ArgumentExcepttion ae)
{
// Code here logs the exception message
// And this is supposed to re-throw the exeception
throw ae; // as opposed to throw;
// But, as we all know, doing this creates a new exception with a shorter stack trace.
}
Run Code Online (Sandbox Code Playgroud)
我在许多地方看到过这种情况.我真的不能想到切断堆栈跟踪会有用的情况.我认为这应该是特殊的情况值得评论.如果我错了,请纠正我.如果要切割堆栈跟踪,我认为总是做得更好:
throw new ArgumentException("text", ae /* inner exc */);
Run Code Online (Sandbox Code Playgroud)
无论如何,我想做的是检测所有这些情况并发出警告.正则表达式搜索无济于事,因为:
catch(Exception e)
{
Exception newExc = new Exception("text", e);
Log(newExc);
throw newExc;
}
Run Code Online (Sandbox Code Playgroud)
我将不得不使用StyleCop之类的工具(我有4.3.3.0版本).我现在正在使用VS2008,但很快就会转向VS2010.
关于如何完成我想要的任何想法?
这不是家庭作业,只是我喜欢的东西.因此,直接计算因子不是很快; 记忆化可以帮助,但如果结果是装配到32或64位,则阶乘只能为输入工作0通过12和20分别.所以...我们不妨使用查找表:
n n!
0 1
1 1
2 2
3 6
4 24
5 120
6 720
7 5040
8 40320
9 362880
10 3628800
11 39916800
12 479001600
13 6227020800 2^32= 4294967296
14 87178291200
15 1.30767E+12
16 2.09228E+13
17 3.55687E+14
18 6.40237E+15
19 1.21645E+17
20 2.4329E+18
2^64= 1.84467E+19
Run Code Online (Sandbox Code Playgroud)
因此,假设我想要一个使用内联汇编的内联C++阶乘函数,结果需要32位或64位无符号整数.如果输入为负或大到足以导致溢出,则输出应为0.如何在汇编中完成此操作以使其消耗最少量的循环?此代码将在64位Intel/AMD架构上运行.如果可行,我有兴趣改善最坏的情况,所以20!不应该花费更多的时间来计算0!- 希望有一种二元搜索方法.希望有一个聪明的伎俩if (n == 0 || n == 1) { return 1; }.此外,如果输出需要是32位,那么我认为汇编指令可以包含代码和数据.我的装配知识很薄弱.如果这个问题没有多大意义,请告诉我.
能够在C++中使用该函数会很好 - 使它成为一个更现实的问题.例如,如果调用函数是昂贵的,那么尝试在程序集的主体中保存1-2个时钟周期将无济于事.
C++初学者的问题。这是我目前所拥有的:
// From tchar.h
#define _T(x) __T(x)
...
// From tchar.h
#define __T(x) L ## x
...
// In MySampleCode.h
#ifdef _UNICODE
#define tcout wcout
#else
#define tcout cout
#endif
...
// In MySampleCode.cpp
CAtlString strFileName;
if (bIsInteractiveMode)
{
char* cFileName = new char[513];
tcout << endl;
tcout << _T("Enter the path to a file that you would like to XYZ(purpose obfuscated) ") << endl;
tcout << _T(">>> ");
cin.getline(cFileName, 512);
strFileName = cXmlFileName;
}
// Demonstrates how CAtlString can …Run Code Online (Sandbox Code Playgroud) 我遇到了下面的F#样本,发现它很有趣.
http://www.codeproject.com/KB/net-languages/SymbolicCalcInFS.aspx
Clojure是否有语言/图书馆设施可以轻松完成这样的事情?如果使事情变得更容易,可以强制使用波兰表示法来表示公式.
谢谢,如果有问题请告诉我.
参考资料如下:http: //msdn.microsoft.com/en-us/library/system.string.intern.aspx
看起来这是由编译器自动完成的,但也可以手动完成.如果我错了,请纠正我,并对此有所了解.语言是C#,VB.Net,C++/CLI,还是其他?
谢谢.
bool? x = true;
if (x == true)
Run Code Online (Sandbox Code Playgroud)
看起来很尴尬.
但有时这正是所需要的.
有没有更好的办法?
编辑:
谢谢大家的尝试,但到目前为止,我还没有找到一种能够击败原版的方法.我想我只需要处理尴尬,或者评论一下.
选项A:
if (NULL == pSomethingColumn) // Yes, we use Yoda conditions
if (NULL != pSomethingColumn)
Run Code Online (Sandbox Code Playgroud)
要么
if (pSomethingColumn)
if (!pSomethingColumn)
Run Code Online (Sandbox Code Playgroud)
我正在寻找解释推理的参考资料.
我听说有人说从技术上讲NULL不一定要定义为0,而是来吧!如果是这种情况,那么吸盘(我们的应用程序)会以-2147483648不同的方式崩溃.
那么,如果NULL != 0,那么我们将遇到大问题.
请帮我解决一个毫无意义的语法辩论.我对这两种方式都不是特别关注; 只是寻找官方的方式.谢谢.
PS我们正在使用Visual Studio C++编译器.
我在这里找到了类似于我需要的东西:http:
//www.codeproject.com/KB/cs/PropertiesSettings.aspx
但它并不适合我.用户设置存储在一些遥远的位置,例如C:\documents and settings\[username]\local settings\application data\[your application],但我无法访问这些文件夹,我无法将设置文件从一台计算机复制到另一台计算机,或者完全删除该文件.此外,在应用程序旁边设置xml文件并复制/发送两者都非常方便.这用于演示软件(这是一种合法的编码任务类型),将由该领域的非技术人员使用.我需要快速完成这个,所以我需要重用一些现有的库而不是自己编写.我需要使它易于使用和便携.我想要的最后一件事就是在午夜接到一个电话,说明当我通过我将建立的设置对话框进行编辑时,设置不会持续存在.
因此,用户设置存储上帝知道在哪里,并且应用程序设置是只读的(不去).还有什么我可以做的吗?我认为app.config文件有多个用途,我想我曾经看到它按照我想要的方式使用,我只是找不到链接.
如果有什么不清楚,请告诉我.
我可以这样做,在默认位置插入图片和文字:
private static object objTrue = true;
private static object objFalse = false;
private static object objMissing = Missing.Value;
private static object objEndOfDoc = @"\endofdoc"; // \endofdoc is a predefined bookmark.
...
this.WordApp = new Word.Application();
this.WordDoc = new Word.Document();
this.WordApp.Visible = true;
this.WordDoc = this.WordApp.Documents.Add(ref objMissing, ref objMissing, ref objMissing, ref objMissing);
this.WordDoc.Content.InlineShapes.AddPicture(
FileName: @"C:\MyLogo.png",
LinkToFile: ref objMissing,
SaveWithDocument: ref objTrue,
Range: objMissing);
// Insert a paragraph at the beginning of the document.
var paragraph1 = this.WordDoc.Content.Paragraphs.Add(ref objMissing);
paragraph1.Range.Text …Run Code Online (Sandbox Code Playgroud)