小编Ste*_* Lu的帖子

OS X上的opendiff(FileMerge):默认选择left

我是否可以将此工具配置为默认左侧而不是右侧的每个不同块的选择?

现在,解决方法是交换侧面,但这有点令人困惑.

macos filemerge difftool opendiff

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

在编译时在模板中连接编译时字符串?

目前我有:

template <typename T> struct typename_struct<T*> {
    static char const* name() { 
        return (std::string(typename_struct<T>::name()) + "*").c_str(); 
    }
};
Run Code Online (Sandbox Code Playgroud)

我想知道我是否可以避免在我被迫分配字符串来执行连接的整个位置.

这一切都发生在编译时,即我打算"int****"在引用时获取字符串typename_struct<int****>::name().(假设我已经声明了相应的int返回专门化"int")

在编写代码时,编译器是否仅在编译时使用std :: string进行串联?(我会好的)或者这样的调用会在运行时导致基于4 std :: string的连接吗?(我不会那么好)

c++ string templates template-meta-programming c++11

5
推荐指数
2
解决办法
5223
查看次数

在OS X上编译简单C程序时出现clang链接器错误

我正在从这篇文章构建此代码

我正在使用建议的命令来构建它: gcc -Wall -o keyboard_leds keyboard_leds.c -framework IOKit -framework CoreFoundation

$ curl -O http://osxbook.com/book/bonus/chapter10/kbdleds/download/keyboard_leds.c
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 11542  100 11542    0     0   139k      0 --:--:-- --:--:-- --:--:--  140k

$ clang -Wall -o keyboard_leds keyboard_leds.c -framework IOKit -framework CoreFoundation
Undefined symbols for architecture x86_64:
  "_print_errmsg_if_err", referenced from:
      _create_hid_interface in keyboard_leds-d14ed5.o
  "_print_errmsg_if_io_err", referenced from:
      _create_hid_interface in keyboard_leds-d14ed5.o
ld: symbol(s) not found for …
Run Code Online (Sandbox Code Playgroud)

c clang linker-errors

5
推荐指数
0
解决办法
759
查看次数

clang libTooling:如何找到 AST 项目来自哪个标题?

在网络上找到的 clang 工具示例总是在玩具示例上运行,这些示例通常都是非常简单的 C 程序。

我正在构建一个对 C++ 代码执行源到源转换的工具,这显然是一项非常非常具有挑战性的任务,但 clang 可以胜任这项任务。

我现在面临的问题是,clang 为任何使用 STL 的 C++ 代码生成的 AST 是巨大的。例如,我有一些 C++ 代码,其中clang++ -ast-dump ... | wc -l67,018 行令人毛骨悚然的 AST gobbledygook!

其中 99% 是标准库的东西,我的目标是在我的源到源元编程任务中忽略它们。所以,为了实现这一点,我想简单地过滤掉文件。假设我只想查看我正在分析的项目标头中的类定义(并忽略所有标准库标头的内容),我只需要弄清楚我CXXRecordDecl的每个标头来自哪个标头!

这能做到吗?

编辑:希望是一种解决方法。现在试试这个......重要的是它必须告诉我decls来自的标题,而不是对应于翻译单元的cpp文件。

c++ clang abstract-syntax-tree libtooling

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

不允许从'const unsigned char*const*'到'const char*const*'的static_cast

我遇到的是我的编译器拒绝将我的unsigned char指针强制转换为带符号的char指针.我困惑了一会儿,因为我一直使用static_cast来转换签名时间最长.

然后我做了一点挖掘(好吧,它不是很深.我做了一点舀!)尽管现在我明白防止指针式铸造static_cast正好是为什么它是更安全和更好的投射方式(可能会调用实现定义的行为或未定义的行为的传统替代方案),我仍然不确定我应该为我的情况做些什么.

我在这里是对OpenGL API函数的调用,其签名是

void glShaderSource(
    GLuint shader, GLsizei count, const GLchar **string, const GLint *length
);
Run Code Online (Sandbox Code Playgroud)

我最近更改了文件阅读器API,以便不再将从文件中读取的数据作为a返回,而是char *使用unsigned char *.这种变化没有出错,因为我觉得unsigned char对原始数据的处理能力要好得多(即使它可能是ASCII数据),void *在这方面确实可能更清楚.

然后我当然会把这个指针的地址作为第三个arg传递给glShaderSource.

我认为对我来说安全进行C式演员是安全的GLchar**,事实上这可能是这种情况的标准答案.使用reinterpret_cast只会超越,但不可否认只是少量.

但是我想知道在这种情况下思考过程应该是什么.为什么我能够在这里驳回这些角色的签名?是不是因为我不希望写一个在其任何字符上设置高位的着色器,这意味着我可以投射它?

如果我面临有符号/无符号整数的情况,并且虚假的负整数值被解释为大的正值会有什么可怕的后果呢?我怎样才能在这里编写代码以试图对它"安全"?

我的直觉告诉我,如果没有实现实际执行的代码并且观察数据本身而不是传递指针,这显然是不可能的,所以static_cast在这种情况下是否没有办法重新获得安全性,因为我被迫工作用指针.

c++ static-cast

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

两个分支与git diff相比较,但具有不同的哈希值

通常当两个分支在相同的源代码状态上重合时,它们将对它们进行散列并显示为折叠在一起.但我发现自己处于一个有趣的状态(标题中描述).

我是如何到达那里的.我上周有一个旧分支,我将很多变化从master合并到它.在这一点上,这是一个快进,而且与主人没有任何区别.

但是当我将一个功能分支合并到这个分支(它几乎和master一样具有相同的状态)时,它最终会像这样:

* b0dc045 - (new-branch) refactored it. seems to work fine
| * 4b89219 - (HEAD -> feature, origin/feature) refactored it. seems to work fine
|/
* Merge branch 'master' into 'feature'
|\
...
Run Code Online (Sandbox Code Playgroud)

"主人"在某处......

所以无论如何,git diff new-branch feature显示没有差异...但他们有不同的哈希.....

有什么东西可以检查,真正看到他们真正的不同之处?

更新:

我想分支历史的各个方面都包含在生成哈希的数据集中.这可以解释这种差异.

所以我做了一个快速而肮脏的把戏

$ diff <(git log new-branch) <(git log feature) 
1c1
< commit b0dc045b82cfc2f7060ccd3b28dd1b1ca1cf2a59
---
> commit 4b8921960cc8f1d42e3e4d1b505228a2dc0c0638
Run Code Online (Sandbox Code Playgroud)

它表明第一行的哈希值不同.这是令人费解的部分.它还显示24000行git log的其余部分是相同的.

git

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

npm 过时的全局包:如何实际更新包?

\xe2\x9d\xaf npm outdated -g\nPackage              Current  Wanted  Latest  Location\neslint                3.11.1  3.11.1  3.15.0\neslint-plugin-react    3.0.0   6.9.0   6.9.0\nflow-bin              0.35.0  0.39.0  0.39.0\ngrunt-cli             0.1.13   1.2.0   1.2.0\ngulp                   3.9.0   3.9.1   3.9.1\njshint                 2.8.0   2.9.4   2.9.4\nnpm                    3.8.6   4.3.0   4.2.0\nuglify-js              2.7.0   2.7.5   2.7.5\n
Run Code Online (Sandbox Code Playgroud)\n\n

想知道为什么我的 eslint 不会更新。npm upgrade -g -dd eslint给我看

\n\n
npm verb outdated not updating eslint because it's currently at the maximum version that matches its specified semver range\n
Run Code Online (Sandbox Code Playgroud)\n\n

这促使我尝试outdated,但无论哪种方式,全球package.json性都不存在。那么为什么我的版本仅限于 3.11?

\n\n

根据 npmjs 文档,

\n\n
\n

如果没有可用的 semver 范围(即您正在运行 npm outdated\n …

node.js npm

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

HTML/CSS:页面左侧的导航栏

我发现创建这样具有良好语义的布局很尴尬。

左侧是大约 150 像素宽的列,其中包含导航元素。

我想将网站这一部分的 HTML 放在 HTML 代码的开头,然后有一个简单的方法来强制页面的其余部分不侵占左侧的区域(150 像素列)。

我考虑过一些选择。

  1. 将网站内容的其余部分放置在一个 div 中,该 div 的左边距明确为 150 像素。
  2. 将导航元素设置为宽度 150px 并向左浮动。页面的其余部分自然换行。

还有其他更适合此任务的选项吗?

这是缺点。

  1. 将 nav 元素更改为 200px 现在需要我将另一个 div 的左边距编辑为 200px。当然,对于一次性布局更改来说这并不算太糟糕,但是如果我让导航元素的宽度从脚本动态更改怎么办?我还需要脚本来更改 div 的边距。
  2. 如果 nav 元素设置为position:fixed(并占据页面的整个左列),则页面的其余部分换行不适应其现在的静止行为,并且当页面滚动时看起来很糟糕。为了解决这个问题,我需要使导航元素的高度无限。我不知道如何以正确的方式做到这一点。height:9999999px;?这使得我的页面高度达到 1000 万像素,而滚动条现在毫无用处。

html css layout

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

从全局命名空间引用某些东西?

这真是微不足道,但我收到了一个我没想到的错误.

我有一些代码在命名空间内

以下是一些代表我的代码结构的伪代码:

namespace A {
    void init() {
        initialize_kitchen_sink();
    }
    #include "operations.h" // declares shake_and_bake()
    void foo() {            
        shake_and_bake();
    }
    void cleanup() {
        // do nothin' cuz i'm a slob
    }
}
Run Code Online (Sandbox Code Playgroud)

错误:

undefined reference to `A::shake_and_bake`
Run Code Online (Sandbox Code Playgroud)

c++ namespaces

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

&lt;tr&gt; 上的 childNodes 中有奇怪的东西,让我绊倒

<tr id='tt_info_entry_2'>
  <th colspan=3>Read sigma[0]</th> 
  <th colspan=3>Read sigma[1]</th> 
</tr>
Run Code Online (Sandbox Code Playgroud)

但在 Chrome 中我得到:

屏幕截图

请注意神秘的“文本”对象妨碍了我的 for 循环。他们也有三个。(只有两个<th>

这是什么?

PS 我将使用getElementsByTagName('th')<tr>获得一个干净的数组。但是,当我用 s 做各种忍者的事情时,我并没有弹出这些奇怪的文本div。我可以有解释吗?

html javascript

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