我目前正在修复C代码中的遗留错误.在修复这个bug的过程中,我存储了unsigned int一个unsigned long long.但令我惊讶的是,当我在64位版本上编译此代码时,数学停止工作GCC.我发现问题是,当我分配一个long longint值,然后我得到一个看起来像的数字0x0000000012345678,但在64位机器上,这个数字变成了0xFFFFFFFF12345678.
有人可以向我解释或指出某些关于在较大的数据类型中存储较小数据类型时应该发生什么的规范或文档,也许在C中执行此操作的适当模式是什么?
更新 - 代码示例
这是我正在做的事情:
// Results in 0xFFFFFFFFC0000000 in 64 bit gcc 4.1.2
// Results in 0x00000000C0000000 in 32 bit gcc 3.4.6
u_long foo = 3 * 1024 * 1024 * 1024;
Run Code Online (Sandbox Code Playgroud) 回到我的C#天,我喜欢使用名为"GhostDoc"的Visual Studio扩展.现在我已经被用作Java开发人员,我正在使用Eclipse.我可以在没有推断文档的情况下生活,但我想做的是智能地"修复"我的文档.例如,假设我有以下方法:
/**
* Gets a collection of {@link Foo} objects
* @param bar The bar level
* @param baz The bazziness
*/
public Collection<Foo> getFoos(int bar, int baz)
{
// Do something cool
}
Run Code Online (Sandbox Code Playgroud)
后来在开发中我意识到允许我的方法的使用者传入qux值会很有用.不仅如此,将它作为第一个参数最有意义.此外,我将使用该方法抛出超级有用的FooBarException.所以现在我的方法看起来像这样:
/**
* Gets a collection of {@link Foo} objects
* @param bar The bar level
* @param baz The bazziness
*/
public Collection<Foo> getFoos(String qux, int bar, int baz) throws FooBarException
{
// Do something cool
}
Run Code Online (Sandbox Code Playgroud)
作为一名优秀的开发人员,我希望我的更改能够反映在我的JavaDoc中.在GhostDoc中,我可以点击我的文档快捷键,它会添加新的东西,而不会打扰旧的东西.在Eclipse中,它呈现了一整套新的JavaDoc,我必须做一堆复制面食.我怎么能自动将新@param,@exception以及缺少@returns参数到我的JavaDoc不失,我目前拥有的JavaDoc的?
我有一个列表属性的类,在某些情况下似乎丢失了一个元素.我不知道这发生的时间.
所以我想要做的是设置一个Visual Studio断点,它将在该值发生变化时暂停程序.条件断点在这种情况下不起作用,因为我不知道删除此断点的是什么.
换句话说,我希望我的程序停止myList.Count评估一个新的数字.
关于如何做到这一点的任何想法?
我正在尝试对一个引用另一个类的静态数据的类进行单元测试.我不能"不"使用这个静态类,但显然运行多个测试已经成为问题.所以我的问题是这个.在junit测试中有没有办法重新初始化静态类?那样一次测试不受前一次测试的影响?
换句话说,换句话说:
Foo.setBar("Hello");
// Somehow reinitialize Foo
String bar = Foo.getBar(); // Gets default value of bar rather than "Hello"
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不能改变Foo,所以我坚持使用它.
编辑看起来我让我的例子有点过于简单了.在实际代码中,"Bar"由系统属性设置,并设置为内部静态变量.所以一旦它开始运行,我就无法改变它.
在C#中,我喜欢使用Convert类.它使得从一种类型转换为另一种类型变得容易和一致.我在考虑用Java编写类似的类,但我不想重新发明轮子.所以我用Google搜索,看看是否存在这样的事情并且没有取得好成绩.那么在标准的libs,google guava或apache commons中是否有人知道这样的事情?
这听起来应该很容易,但我还没有找到答案.如果我使用mvn install安装工件,我该如何删除所述工件?我尝试使用依赖:purge-local-repository,但它只删除依赖项 - 而不是实际的工件.
有任何想法吗?如果有帮助,我正在使用maven 2.2.1.
编辑:我知道类似的问题,但我不满意删除我的整个.m2 repo只是为了删除单个SNAPSHOT依赖.另外,正如我所提到的,purge-local-repository不起作用,因为它似乎只是删除依赖项而不是实际的工件.
编辑2:我可能不太清楚.考虑这个例子.我有一个名为my-artifact的SNAPSHOT工件.my-artifact有两个依赖项:my-dependency-one和my-dependency-two.我想写一个脚本,删除所有三个,而不必解析pom.xml文件.换句话说,我想清除my-dependency-one,my-dependency-two和AND -artifact,而不必显式输入maven,我想删除my-artifact.
在"重复问题"的答案中,它建议进入并手动删除.m2仓库中的工件.这不是这个问题的答案,因为脚本在执行maven命令时不知道组或工件名称.我想要一些类似于依赖的东西:purge-local-repository,除了它不仅要删除依赖项,还要删除工件本身.
我猜测基于评论中的混淆,这是不可能的.如果不是那个是可以接受的答案.
我有一个 PowerShell 7.1 帮助程序脚本,用于将项目从 subversion 复制到本地设备。我希望通过启用 PowerShell 将参数自动补全到此脚本中来使此脚本更易于使用。经过一些研究,看起来我可以实现一个接口来通过 ValidateSet 提供有效参数。
\n根据微软的文档,我尝试这样做:
\n[CmdletBinding()]\nparam (\n [Parameter(Mandatory)]\n [ValidateSet([ProjectNames])]\n [String]\n $ProjectName,\n\n #Other params\n)\n\nClass ProjectNames : System.Management.Automation.IValidateSetValuesGenerator {\n [string[]] GetValidValues() {\n # logic to return projects here.\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n当我运行它时,它不会自动完成,并且出现以下错误:
\n\xe2\x9d\xaf Copy-ProjectFromSubversion.ps1 my-project\nInvalidOperation: C:\\OneDrive\\Powershell-Scripts\\Copy-ProjectFromSubversion.ps1:4\nLine |\n 4 | [ValidateSet([ProjectNames])]\n | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | Unable to find type [ProjectNames].\nRun Code Online (Sandbox Code Playgroud)\n这是有道理的,因为类在参数之后才被定义。所以我将类移到了参数上方。显然这是一个语法错误。那么我该怎么做呢?在简单的 PowerShell 脚本中不可能吗?
\n说我有一个番石榴Multimap.我有一个值,"Foo",可能属于一个或多个键.有什么方法可以找出哪些键包含一个条目"Foo"?
考虑我有一个maven java项目,我希望尽可能使用最低版本的Java.它有许多依赖项.有没有办法我可以看到用于编译jar的java版本是针对所有已解析的依赖项?
我似乎无法写入.NET中的事件日志.我得到以下异常:
System.Security.SecurityException:找不到源,但无法搜索部分或全部事件日志.无法访问的日志:安全性.
我不想访问安全日志.我该如何解决这个错误?谢谢!