小编Lon*_*ner的帖子

为什么即使使用volatile关键字,编译器也会因strncmp()而优化掉共享内存读取?

这是一个foo.c将数据写入共享内存的程序.

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <stdint.h>
#include <unistd.h>
#include <sys/ipc.h>
#include <sys/shm.h>

int main()
{
    key_t key;
    int shmid;
    char *mem;

    if ((key = ftok("ftok", 0)) == -1) {
        perror("ftok");
        return 1;
    }

    if ((shmid = shmget(key, 100, 0600 | IPC_CREAT)) == -1) {
        perror("shmget");
        return 1;
    }

    printf("key: 0x%x; shmid: %d\n", key, shmid);

    if ((mem = shmat(shmid, NULL, 0)) == (void *) -1) {
        perror("shmat");
        return 1;
    }

    sprintf(mem, "hello");
    sleep(10);
    sprintf(mem, …
Run Code Online (Sandbox Code Playgroud)

c volatile shared-memory compiler-optimization strncmp

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

C++ 11标准中的哪一节规定了原始数据类型大小之间的相对排序?

我试图找出C++标准是否指定了各种类型的大小之间的关系.例如,https : //stackoverflow.com/a/589599/1175080上的答案似乎声称:

sizeof(short int) <= sizeof(int) <= sizeof(long int)
Run Code Online (Sandbox Code Playgroud)

/sf/answers/41277911/的另一个答案有类似的说法:

sizeof(int) <= sizeof(long)
Run Code Online (Sandbox Code Playgroud)

我正在经历n3337.pdf(我相信C + 11标准的良好代理)但我找不到保证这些不等式的特定语言.

n1256(C99)中,我可以在第5.2.4.2.1节中找到特定语言.整数类型的大小清楚地说明了每种类型的最小值和最大值,这些值间接地建立了大小之间的相对排序.

这些不等式是否在C++标准中类似地定义,还是直接从C继承?标准中的语言在哪里?

c++ types c++11

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

pip3 安装了一个违反需求说明符的依赖版本

我的 中有以下两个依赖项requirements.txt

$ pip3 install elasticsearch==7.0.0 requests==2.21.0
Collecting elasticsearch==7.0.0
  Using cached https://files.pythonhosted.org/packages/a8/27/d3a9ecd9f8f972d99da98672d4766b9f62ef64c323c40bb5e2557e538ea3/elasticsearch-7.0.0-py2.py3-none-any.whl
Collecting requests==2.21.0
  Using cached https://files.pythonhosted.org/packages/7d/e3/20f3d364d6c8e5d2353c72a67778eb189176f08e873c9900e10c0287b84b/requests-2.21.0-py2.py3-none-any.whl
Collecting urllib3>=1.21.1 (from elasticsearch==7.0.0)
  Using cached https://files.pythonhosted.org/packages/39/ec/d93dfc69617a028915df914339ef66936ea976ef24fa62940fd86ba0326e/urllib3-1.25.2-py2.py3-none-any.whl
Collecting certifi>=2017.4.17 (from requests==2.21.0)
  Using cached https://files.pythonhosted.org/packages/60/75/f692a584e85b7eaba0e03827b3d51f45f571c2e793dd731e598828d380aa/certifi-2019.3.9-py2.py3-none-any.whl
Collecting chardet<3.1.0,>=3.0.2 (from requests==2.21.0)
  Using cached https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl
Collecting idna<2.9,>=2.5 (from requests==2.21.0)
  Using cached https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl
requests 2.21.0 has requirement urllib3<1.25,>=1.21.1, but you'll have urllib3 1.25.2 which is incompatible.
Installing collected packages: urllib3, elasticsearch, certifi, chardet, idna, requests
Successfully installed certifi-2019.3.9 chardet-3.0.4 elasticsearch-7.0.0 idna-2.8 requests-2.21.0 urllib3-1.25.2
Run Code Online (Sandbox Code Playgroud)

我想了解上面输出中出现的这个警告:

requests 2.21.0 …
Run Code Online (Sandbox Code Playgroud)

versioning pip dependency-management python-3.x

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

切片可以访问另一个超出范围的切片,但索引超出范围会导致恐慌

我的代码:

package main

import (
    "fmt"
)

func main() {
    a := [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    b := a[1:4]
    fmt.Println("a:", a)
    fmt.Println("b:", b)
    
    // Works fine even though c is indexing past the end of b.
    c := b[4:7]
    fmt.Println("c:", c)
    
    // This fails with panic: runtime error: index out of range [4] with length 3
    // d := b[4]
}
Run Code Online (Sandbox Code Playgroud)

输出:

a: [0 1 2 3 4 5 6 7 8 9]
b: …
Run Code Online (Sandbox Code Playgroud)

go slice indexoutofboundsexception semantics

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

在行走DOM树时,确定元素是块级还是与JavaScript内联

可能重复:
检测DOM元素的内联/块类型

在走HTML5 DOM树时,我想确定每个元素是块级元素还是内联元素.

var divElement = document.getElementById('foo');
alert(divElement.style.display)
alert(window.getComputedStyle(divElement, null).getPropertyValue('display'))
Run Code Online (Sandbox Code Playgroud)

我看到第一个警告显示空字符串,而第二个警告显示"阻止",所以我认为第二个技术是我需要使用的.这是一个jsfiddle:http://jsfiddle.net/UaFpv/

我想知道是否有任何缺点用window.getComputedStyle(divElement, null).getPropertyValue('display')做我的工作,比如跨浏览器的兼容性问题,等有没有可以解决这个问题的任何其他技术?

html javascript dom

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

设置 WH_KEYBOARD 挂钩失败并出现错误 1428

这是我的 C++ 代码:

#include <iostream>
#include <windows.h>

HHOOK hook;

LRESULT CALLBACK keyboardHook(int nCode, WPARAM wParam, LPARAM lParam)
{
    std::cout << "Hook callback" << std::endl;
    return CallNextHookEx(hook, nCode, wParam, lParam);
}

int main(int argc, char **argv)
{
    hook = SetWindowsHookEx(WH_KEYBOARD, keyboardHook, NULL, NULL);
    if (hook == NULL) {
        std::cout << "Error " << GetLastError() << std::endl;
        return 1;
    }
    std::cout << "Hook set" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我使用 Visual Studio 编译它,如下所示:

cl /D_WIN32_WINNT=0x0401 foo.cc /link user32.lib
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我收到错误 1428。

C:\>foo.exe
Error 1428
Run Code Online (Sandbox Code Playgroud)

这就是错误1428的含义。 …

c++ winapi visual-studio

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

为什么不\ b\w +\b匹配一个单词?

为什么以下Python语句会返回None

>>> re.match('\b\w+\b', 'foo')
>>>
Run Code Online (Sandbox Code Playgroud)

据我了解,这应该与单词相符foo.第一个\b应匹配单词的开头foo,\w+应匹配单词foo,最后\b应匹配单词的结尾foo.我的理解有什么问题?

python regex

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

测试 Python 变量和可调用变量之间相等性的正确方法是什么?

比较变量是否包含我想要的可调用对象的正确方法是什么?我应该使用is运算符还是==运算符?

在下面的交互式会话中,我定义了两个可调用对象,fg。我将一个分配给变量a,另一个分配给变量b

现在,当我想检查是否a相同时f,两者a == fa is f可以工作。

>>> def f():
...     pass
...
>>> def g():
...     pass
...
>>> a = f
>>> b = g
>>> a == f
True
>>> a is f
True
>>> a == g
False
>>> a is g
False
>>> b == f
False
>>> b is f
False
>>> b == …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

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

使用Python unittest测试回调调用的正确方法是什么?

我有一个类似于以下的应用程序代码.

# Filename: app.py
class Foo:
    def __init__(self):
        self.callback = None

    def set_handler(self, callback):
        self.callback = callback

    def run(self, details):
        name, age = details.split('/')
        if age.isdigit():
            age = int(age)
        else:
            age = -1
        return self.callback(name, age)
Run Code Online (Sandbox Code Playgroud)

如您所见,它提供了set_handler一种设置回调的方法.稍后必须使用两个参数调用回调:字符串和整数.我试图在单元测试中确保这一点.

# Filename: test_app.py
import unittest
from app import Foo

class AppTest(unittest.TestCase):
    def f(self, a, b):
        # This callback should get called with the first argument as
        # string and the second argument as integer
        return repr(a) + ',' + repr(b)

    def …
Run Code Online (Sandbox Code Playgroud)

python unit-testing callback python-3.x

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

bash read 命令使用空格作为分隔符将行分割成单词,即使空格不在 IFS 中

我正在使用 bash。

$ bash --version
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
From `help read`
Run Code Online (Sandbox Code Playgroud)

这就是前几行所说的help read

$ help read | head
read: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name …
Run Code Online (Sandbox Code Playgroud)

bash

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