小编dav*_*ave的帖子

在变基之后我是否丢失了我的更改?

我最近重新安排了一个我正在研究的分支机构.树的历史看起来像这样:

1 = 2 = 3 = 4
     \
      5 = 6 = 7
           \
            8
Run Code Online (Sandbox Code Playgroud)

我想将我的更改(图中的数字8)重新设置为主分支(现在在图上提交4).所以我做了以下事情:

git checkout my_branch
git rebase master
Run Code Online (Sandbox Code Playgroud)

<很多git mergetool/git rebase --skip来解决冲突>

只有现在我跑:

git checkout my_branch
git diff master
Run Code Online (Sandbox Code Playgroud)

我得到零差异.我没有丢失我的分支(我仍然可以从我保存的补丁中重新创建我的更改)但是我找不到我所做的合并/转换.我做错了什么?如果我的更改与主人合并,或者我必须再次执行此操作吗?

git version-control

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

C++中静态与C++中静态之间的区别?

C和C++中的static关键字有什么区别?

c c++

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

设置语言不工作select2

<select data-placeholder="Select or type" data-minlength="2" multiple = "multiple" name='arrAval' id='listAval' class="js-basic-multiple form-control" required>
Run Code Online (Sandbox Code Playgroud)

所以这是问题所在:

正如文档所说我应该能够为这个组件设置语言:

$(".js-basic-multiple").select2({
        language: "language-wanted"
    });
Run Code Online (Sandbox Code Playgroud)

无论我设定哪种语言,它都会返回"没有找到结果".为了清楚起见,如在https://select2.github.io/examples.html#matcher中,它为'language:"es"'返回"No se encontraron resultados"

jquery-select2 select2

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

为什么在使用gcc和std = c99进行编译时找不到getaddrinfo

我有以下代码,我试图编译.当我尝试使用std = c99时,它失败并显示有关"类型struct addrinfo的隐式声明"和"函数getaddrinfo的隐式声明"的警告.它适用于std = gnu99.

#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>

int fails(const char *host, const char *port, struct addrinfo *hints)
{
        int rc;
        struct addrinfo *results;

        // can't find this function??
        rc = getaddrinfo(host, port, hints, &results);

        // free memory in this important application
        freeaddrinfo(results);

        return rc;
}
Run Code Online (Sandbox Code Playgroud)

我用来编译的命令是:

gcc -c -o fail.o -Wall -Werror -std=c99 -save-temps fail.c
gcc -c -o fail.o -Wall -Werror -std=gnu99 -save-temps fail.c
Run Code Online (Sandbox Code Playgroud)

看看fail.i(预处理标题)我看到编译器是正确的:那些类型还没有在引入的头文件中声明.

所以我去了标题并注意到getaddrinfo被一个保护#ifdef __USE_POSIX包围,显然在用c99编译时没有声明.

我怎么告诉gcc我想用c99和POSIX?如果我决定稍后切换编译器(例如Clang或icc),我真的不想使用gnu99.

c gcc posix

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

使用navigator.language获取用户的区域

有一段时间,我一直在使用这样的东西来获取用户的国家(ISO-3166):

const region = navigator.language.split('-')[1]; // 'US'
Run Code Online (Sandbox Code Playgroud)

我总是假设字符串类似于en-US- 国家将保持数组的第二个位置.

我认为这个假设是不正确的.根据MDN文档,navigator.language返回:"表示BCP 47中定义的语言版本的字符串." 读取BCP 47,主要语言子标签保证是第一个(例如,'en'),但区域代码不保证是第二个子标签.区域子标签之前和之后可以有子标签.

例如"sr-Latn-RS",有效的BCP 47语言标记:

sr                |  Latn           |  RS
primary language  |  script subtag  |  region subtag
Run Code Online (Sandbox Code Playgroud)

navigator.languageBCP 47的子集返回的值是否仅包含语言和区域?或者是否存在通常用于从语言标记中提取区域子标签的库或正则表达式?

javascript locale iso-3166 ietf-bcp-47

17
推荐指数
3
解决办法
7678
查看次数

在C中循环时,Scanf会相互跳过

我正在尝试开发一个简单的基于文本的刽子手游戏,并且主游戏循环以提示输入每个字母的猜测开始,然后继续检查字母是否在单词中并且如果它生命关闭不是.但是,当我运行游戏时,每次提示两次,程序不会等待用户的输入.它也会夺去生命(如果它是正确的输入就会有一个生命,如果没有,则为两个生命),所以无论它采取的是什么都与之前的输入不同.这是我的游戏循环,简化了一下:

while (!finished)
{
    printf("Guess the word '%s'\n",covered);

    scanf("%c", &currentGuess);

    i=0;
    while (i<=wordLength)
    {
        if (i == wordLength)
        {
            --numLives;
            printf("Number of lives: %i\n", numLives);
            break;
        } else if (currentGuess == secretWord[i]) {
            covered[i] = secretWord[i];
            secretWord[i] = '*';
            break;
        }
        ++i;
    }

    j=0;
    while (j<=wordLength)
    {
        if (j == (wordLength)) {
            finished = 1;
            printf("Congratulations! You guessed the word!\n");
            break;
        } else {
            if (covered[j] == '-') {
                break;
            }
        }
        ++j;

        if (numLives == 0) {
            finished = …
Run Code Online (Sandbox Code Playgroud)

c gcc scanf

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

当编译器可以推断出类型时,为函数使用类型签名的好理由是什么

我正在尝试使用'良好的Haskell风格'进行编码,因此我尝试遵循我发现的典型编码标准.此外,使用-Wall和-Werror进行编译,因为我习惯于来自C.我经常得到的一个警告是"没有类型签名的顶级绑定",然后编译器告诉我类型签名应该是什么.

我想念明确定义类型签名的优点是什么.作为一个具体的例子:

-- matchStr :: String -> String ->  Maybe (String)
matchStr str s
        | isPrefixOf str s = Just(drop (length str) s)
        | otherwise = Nothing
Run Code Online (Sandbox Code Playgroud)

现在,如果我想将类型从String更改为ByteString以提高性能,会发生什么?我将不得不导入ByteString包并使用某些函数的限定版本.不需要进行其他更改.如果我有类型签名,那么我也必须更改它,但Haskell编译器会注意到这个更改并正确地推断出新类型.

那我错过了什么?为什么在一般情况下明确地将类型签名放在函数上是个好主意?也就是说,我知道可能有例外,这是一个好主意,但为什么它一般被认为是好的?

haskell

16
推荐指数
3
解决办法
1377
查看次数

CHAR_BIT是> 8?

ISO C标准要求CHAR_BIT至少为8.

POSIX强制CHAR_BIT等于8,并且(几乎?)所有使用八位字节的网络和通信标准,是否有任何当代C实现CHAR_BIT> 8?

(注意:我对使用18或36位字的历史计算机体系结构不感兴趣.这是关于C的真正问题,因为它在当前的硬件上使用;考虑使用C99或更高版本的系统).

c byte char bit

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

如何在Linux上初始化共享库

我正在Linux下使用C++开发一个共享库,我希望这个库使用log4cxx进行日志记录.但是,我不知道如何设置它.要使log4cxx工作,我需要创建一个logger对象.如何在加载库时确保创建此对象?

我怀疑最简单的方法是将logger对象创建为全局变量,然后在我的库的任何源文件中使用它,并在标题中将其声明为extern.但是,如果应用程序连接到库,我怎样才能自动创建记录器?

我知道在Windows的DLL中,有一个东西是REASON_FOR_CALL == PROCESS_ATTACH; Linux下有类似的东西吗?

c c++ linux initialization shared-libraries

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

最好的linux发行版做内核模块编程

我想做内核模块编程.但是,所有消息来源都告诉linux发行版补丁原始内核,并且模块代码可能无法运行.如果这是真的,我该怎么办.我尝试使用ubuntu制作lfs但几乎每一步都出现错误.我看到某个地方,在安装过程中没有选择任何软件包的arch,gentoo,Ubuntu Server,slackware,susestudio等都是vanilla发行版.那么,我可以将它们用于模块编程吗?

请建议记住我需要在分发中使用GUI.

之后?
PS:我有一个intel核心i3处理器,将在vmware工作站上运行发行版.

linux kernel-module linux-from-scratch linux-distro

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