小编Pse*_*che的帖子

为什么使用bzero而不是memset?

在上一学期的系统编程课程中,我们必须在C中实现一个基本的客户端/服务器.初始化结构,比如sock_addr_in,或者char缓冲区(我们用来在客户端和服务器之间来回发送数据)教授指示我们只使用bzero而不是memset初始化它们.他从未解释过为什么,而且我很好奇是否有正当理由呢?

我在这里看到:http://fdiv.net/2009/01/14/memset-vs-bzero-ultimate-showdownbzero是更有效的,由于一个只能将要归零记忆的事实,所以也没有必须做任何额外的检查memset.尽管如此,这仍然不一定是绝对不能memset用于归零内存的理由.

bzero被认为已弃用,而且不是标准的C函数.根据手册,memset因此优先考虑bzero.所以,你为什么要仍然使用bzeromemset?只是为了提高效率,还是更多?同样,有什么好处memsetbzero,使它成为新的程序的事实上的首选?

c memset systems-programming

150
推荐指数
4
解决办法
8万
查看次数

如何按定义的顺序迭代Python字典?

我正在尝试迭代我按特定顺序定义的字典,但它总是以与我在代码中定义的顺序不同的顺序迭代.这只是我正在尝试做的一个基本的例子.我正在迭代的字典要大得多,具有更复杂的命名键,并且不按字母/数字顺序排列.

level_lookup = \
{
'PRIORITY_1' :   { 'level' : 'BAD',   'value' :   ''  },
'PRIORITY_2' :   { 'level' : 'BAD',   'value' :   ''  },
'PRIORITY_3' :   { 'level' : 'BAD',   'value' :   ''  },
'PRIORITY_4' :   { 'level' : 'BAD',   'value' :   ''  },
'PRIORITY_5' :   { 'level' : 'CHECK', 'value' :   ''  },
'PRIORITY_6' :   { 'level' : 'CHECK', 'value' :   ''  },
'PRIORITY_7' :   { 'level' : 'GOOD',  'value' :   ''  },
'PRIORITY_8' :   { 'level' : …
Run Code Online (Sandbox Code Playgroud)

python dictionary loops

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

如何在不要求用户复制/粘贴身份验证代码的情况下验证Google云端硬盘?

我正在使用DriveCommandLine应用程序来学习Drive API.我只是想知道是否可以使用Google云端硬盘验证我的桌面应用程序而无需用户从浏览器复制/粘贴授权代码?而只是让一个令牌从浏览器传回给应用程序?我可以使用Dropbox API和Google Documents List API执行此操作,但无法弄清楚如何使用Google Drive API.

谢谢.

Google Drive API - DriveCommandLine示例应用(稍加修改):

public class DriveCommandLine {

  private static String CLIENT_ID = APPCONSTANTS.Google.CONSUMER_KEY;
  private static String CLIENT_SECRET = APPCONSTANTS.Google.CONSUMER_SECRET;

  private static String REDIRECT_URI = "urn:ietf:wg:oauth:2.0:oob";

  public static void main(String[] args) throws IOException, URISyntaxException {
    HttpTransport httpTransport = new NetHttpTransport();
    JsonFactory jsonFactory = new JacksonFactory();

    GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
        httpTransport, jsonFactory, CLIENT_ID, CLIENT_SECRET, Arrays.asList(DriveScopes.DRIVE))
        .setAccessType("offline")
        .setApprovalPrompt("force").build();

    String url = flow.newAuthorizationUrl().setRedirectUri(REDIRECT_URI).build();
    System.out.println("Enter authorization code:");
    Desktop.getDesktop().browse(new URI(url));
    BufferedReader br = new …
Run Code Online (Sandbox Code Playgroud)

authentication oauth oauth-2.0 google-drive-api

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

如何获取CUDA内核的汇编代码?

我有一些我在OpenCL和CUDA中编写的内核.在AMD Profiler中运行OpenCL程序时,它允许我查看内核的汇编代码.我想将它与CUDA内核的汇编代码进行比较,以比较两种语言之间的编译器优化.我一直在玩Nvidia Profiler,但我仍然对如何获取内核的汇编代码感到茫然.怎么去做这个?

c assembly cuda gpgpu nvidia

7
推荐指数
1
解决办法
3722
查看次数

将不同的文件复制到输出目录以进行发布和调试?

我知道如何通过Properties => Copy Always选择我想要复制到我的构建的输出目录的文件,但是我无法找到根据构建类型复制不同文件的方法.

我有两个单独的配置文件,一个用于本地开发(即应该仅在调试版本上复制)和一个为服务器环境设置的文件(即应该仅在发布版本上复制).

有谁知道如何实现这种类型的条件功能?

c# msbuild visual-studio-2010 visual-studio

6
推荐指数
1
解决办法
3494
查看次数

这是做什么的:"输入>> 4&0x0F"?

我不明白这段代码到底在做什么,有人可以解释一下吗?

long input;  //just here to show the type, assume it has a value stored
unsigned int output( input >> 4 & 0x0F );
Run Code Online (Sandbox Code Playgroud)

谢谢

c++ bitwise-operators

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

Git子模块警告“发现多个配置”

今天,我开始收到来自 git 的新警告,这是我以前从未见过的关于我的子模块的警告。例如:

warning: <hash_omitted>:.gitmodules, multiple configurations found for 'submodule.foo/bar'. Skipping second one!
Run Code Online (Sandbox Code Playgroud)

快速搜索似乎没有返回任何相关信息。我看到这里生成了警告,听起来可能与工作树有关?

这个警告究竟意味着什么,它的解决方案是什么?

git git-submodules git-worktree

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

在Vim中创建用户定义的事件

我使用一些自动命令在我的vim设置InsertLeaveBufReadPost事件中突出显示无关的空白.我最近开始使用插件来突出显示缩进(https://github.com/nathanaelkane/vim-indent-guides)

问题是如果有一个带缩进的空行,它会被indent-guides插件突出显示,但不会被我的auto命令突出显示.我想要做的是在插件中添加一个自定义事件,这样当完成突出显示时,我可以将自动命令设置为触发并覆盖突出显示的情况.

例如,这是我想要的流程类型(或至少类似的东西):

indent-guides plugin activates
indent-guides plugin highlights all indentation
indent-guides plugin triggers custom event signaling it is done
indent-guides plugin exits
auto command whitespace highlighter is triggered by indent-guides completion event
Run Code Online (Sandbox Code Playgroud)

以下是我用于空格突出显示的自动命令:

autocmd InsertEnter * syn clear EOLWS | syn match EOLWS excludenl /\s\+\%#\@!$/
autocmd InsertLeave,BufReadPost * syn clear EOLWS | syn match EOLWS excludenl /\s\+$/
Run Code Online (Sandbox Code Playgroud)

编辑:

我用另一种方式解决了这个问题(通过编辑不同的插件).这仍然没有回答这个具体问题,因此我不会将其作为解决方案发布.

我作为插件解决问题的方法:https://github.com/ntpeters/vim-better-whitespace

vim vim-plugin

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

无法链接到BFD

我想在我的项目中包含这个文件:http://cairo.sourcearchive.com/documentation/1.9.4/backtrace-symbols_8c-source.html

但它需要与BFD链接.我有两个binutilsbinutils-devel安装.我已经尝试过连接-lbfd以及直接连接/usr/lib64/libbfd.so/usr/lib64/libbfd.a(两者都存在).我也试图寻找pkg-config,看看是否有我应该使用不同的标志,但目前还BFD或没有提及binutilspkg-config.

无论我尝试过什么,我都会遇到以下错误:

undefined reference to 'bfd_init'
undefined reference to 'bfd_openr'
undefined reference to 'bfd_check_format'
undefined reference to 'bfd_checkformat_matches'
undefined reference to 'bfd_close'
undefined reference to 'bfd_map_over_sections'
Run Code Online (Sandbox Code Playgroud)

首先,我正在编译我的记录器和backtrace-symbols.c上面链接的文件(因为记录器是我打算用它来打印痕迹的地方).然后我将这两个目标文件一起链接到一个组合的目标文件中:

CC = clang
CFLAGS = -g -Wall -c
SOURCE = simplog.c
OBJ = simplog.o, simplog-temp.o, backtrace-symbols.o

all:
    $(CC) $(CFLAGS) $(SOURCE); mv simplog.o simplog-temp.o; \
    $(CC) -ansi $(CFLAGS) backtrace-symbols.c; \
    ld -r …
Run Code Online (Sandbox Code Playgroud)

c linker pkg-config dynamic-linking static-linking

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