小编Die*_*Epp的帖子

如何防止gcc优化C中的一些语句?

为了使页面变脏(打开页表项中的脏位),我触摸页面的第一个字节,如下所示:

pageptr[0] = pageptr[0];
Run Code Online (Sandbox Code Playgroud)

但在实践中,gcc将忽略死店淘汰的陈述.为了防止gcc优化它,我重新编写语句如下:

volatile int tmp;
tmp = pageptr[0];
pageptr[0] = tmp;
Run Code Online (Sandbox Code Playgroud)

似乎这个伎俩有效,但有点难看.我想知道是否有任何指令或语法具有相同的效果?而且我不想使用-O0旗帜,因为它也会带来很大的性能损失.

c gcc

95
推荐指数
3
解决办法
12万
查看次数

Git克隆到另一个现有的Git回购

如果我将一个repo克隆到现有的git repo中,我会遇到任何问题吗?

为了简化起见,我正在开发一个应该可用于我所有项目的库"lib /".这是一个单独的git repo.我想将这个lib /导入到我的所有项目中,并且只在一个地方更新它,从不接触任何项目,只需使用它.

我假设这没关系,只是想知道是否有什么我应该注意的.谢谢!

git

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

如何追踪但不是舞台,如何取消演出而不是未演奏?

我有两个简明的问题:

  • 我如何跟踪文件,但没有暂存它们?
  • 如何在不删除文件的情况下取消提交文件?

注意: 我知道我可以进行初始提交以跟踪文件,并从那里开始跟踪我的文件.但有可能专门做我上面提到的问题吗?

我尝试使用git add -N <expr>但它跟踪文件并添加它以进行提交:

PS C:\> git add -N fileA
PS C:\> git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   fileA
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   README.md
#       modified:   composer.lock …
Run Code Online (Sandbox Code Playgroud)

git

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

尝试推送git并接收"无法读取'https://github.com'的用户名:终端提示已禁用"

我正在使用Visual Studio和GitHub扩展.我能够登录,然后克隆我的团队的存储库,然后成功地进行更改.

当我将更改推回到远程时,我会在屏幕上短暂显示一个空白命令提示符,然后输出窗口中出现以下错误:

推送到远程存储库时遇到错误:Git失败并发生致命错误.

致命:遇到AggregateException.发生了一个或多个错误.

错误:无法生成askpass:没有这样的文件或目录

致命:无法读取" https://github.com "的用户名:终端提示被禁用

编辑:通过命令行推送工作,通过GitHub桌面应用程序推送,只是不在此扩展名内.

任何想法为什么会这样?鉴于我已登录扩展程序,我无法确定为什么需要用户名.

git github visual-studio

37
推荐指数
3
解决办法
4万
查看次数

Objective-C:将id转换为NSInteger

我有一个带有NSNumber的字典,我想把它转换成NSInteger.最简单/最简单的方法是将类型转换为NSNumber然后调用integerValue?像这样:

// newQuestion is an NSDictionary defined somewhere
NSInteger questionId = [(NSNumber *)[newQuestion objectForKey:@"question_id"] integerValue];
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?谢谢!

objective-c

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

如何以面向未来的方式确定Windows版本

我注意到GetVersionEx()声明已被弃用.更糟糕的是,对于Windows 8.1(可能是未来版本),版本号受应用程序清单的限制.

我的目标是收集用户正在运行的操作系统上的分析,因此我可以适当地定位支持.我想要一个收集这些数据的面向未来的解决方案.更新清单不起作用,因为我只能更新已发布的Windows版本的清单,而不是更新版本.建议的替换API(版本助手函数)是无用的.

如何收集实际的Windows版本号?

澄清一下:通过"未来验证",我只是说我想要有一个相当不错的机会在下一个版本的Windows上工作.没有什么是确定的,但文档确实说GetVersionEx()不起作用.

c windows winapi

20
推荐指数
2
解决办法
3446
查看次数

如何在python中解析restructuredtext?

是否有任何模块可以将重构文本解析为树模型?

docutils或sphinx可以这样做吗?

python parsing dom restructuredtext

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

这些破坏性变量警告有何意义?

我有这样的功能:

#include <setjmp.h>
jmp_buf buf;
void func2(int g);
extern int some_global;
void func(int x)
{
    if (setjmp(buf))
        return;
    if (some_global)
        x += 5;
    func2(x);
}
Run Code Online (Sandbox Code Playgroud)

GCC(gcc(Debian 4.4.5-8)4.4.5)发出警告:

test.c: In function ‘func’:
test.c:5: warning: argument ‘x’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Wclobbered]

为什么????我的意思是,显然我不在乎是否x被破坏,因为它不可能在setjmp返回后使用.即使编译器应该知道一些非常明显的东西,因为它具有某种特殊的知识setjmp.

我的主要兴趣是找到我继承的代码库中的错误,因此,"使用这种编码风格"并不是我正在寻找的建议.然而,这里有许多奇怪的曲折.例如,如果x是局部变量而不是参数,那么GCC不会抱怨.此外,GCC不会在没有if (some_global)线的情况下抱怨.尼斯.有些事情搞砸了GCC的流量分析,或者GCC知道我不知道的事情.

所以,

  • 是否有一种简单的方法来抑制此函数的此警告,就像您可以将未使用的参数转换为(void)

  • 或者我只是在项目范围内禁止警告?

  • 或者我错过了什么?

更新:让我与您分享一个不会产生警告的略有不同的版本:

#include <setjmp.h>
jmp_buf buf;
void func2(int g);
extern int some_global;
void func(int …
Run Code Online (Sandbox Code Playgroud)

c gcc warnings longjmp

17
推荐指数
2
解决办法
6137
查看次数

使用长度AND编码将const char*string转换为NSString

我想知道哪种方法更好地将const char*string转换为NSString.
我发现有一些事实.

  • [NSString stringWithCString:length:]有点不推荐使用.
  • [NSString stringWithCString:encoding]可能用于我的目的

但我想用长度和编码进行转换(因为如果我通过将编码设置为UTF-8而有一些非ASCII字符,我想要那么好).有什么想法吗?

我现在才想

  1. 使用std :: strncpy(ch1,ch2,len)创建其他char和copy的长度
  2. 使用[NSString stringWithCString:encoding:]

但它效果不好.

c++ cocoa encoding objective-c++

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

为什么/ C允许隐式函数和无类型变量声明?

为什么语言允许隐式声明函数和无类型变量?我知道C是旧的,但是允许省略声明和默认int()(或者int在变量的情况下)对我来说似乎并不那么理智,即便在那时.

那么,为什么它最初被引入?它真的有用吗?它实际上(仍然)使用过吗?

注意:我意识到现代编译器会给你警告(取决于你传递它们的标志),你可以抑制这个功能.那不是问题!


例:

int main() {
  static bar = 7; // defaults to "int bar"
  return foo(bar); // defaults to a "int foo()"
}

int foo(int i) {
  return i;
}
Run Code Online (Sandbox Code Playgroud)

c history language-design implicit-declaration

14
推荐指数
4
解决办法
2829
查看次数