小编How*_*hen的帖子

如何为当前项目配置.ycm_extra_conf.py包括PATH

我为VIM安装了YCM和syntastic,通常它们工作正常,但是当我检测到代码中的一些错误时我遇到了问题,它表明找不到一些头文件(这是我的项目头文件).

我的目录树显示如下:

TOP
??? debug
?   ??? debug.c
?   ??? debug.h
?   ??? debug.mk
?   ??? instrument.c
??? driver
?   ??? driver.c
?   ??? driver_ddi.c
?   ??? driver_ddi.h
?   ??? driver.h
?   ??? driver.mk
??? include
?   ??? common.h
??? libs
??? Makefile
??? mw
?   ??? manager.c
?   ??? mw.mk
??? root
    ??? main.c
    ??? root.mk
Run Code Online (Sandbox Code Playgroud)

我复制了一个.ycm_extra_conf.py到TOP,同时,我也会在TOP 生成tagcscope归档,因此每次我在TOP上打开文件,如:

howchen@host:~/Work/c/sample/src
-> gvim ./driver/driver.c
Run Code Online (Sandbox Code Playgroud)

确保每次我都可以在VIM中添加tagcscope归档.问题是,如果我打开driver.c,其中包含头文件:driver.h,driver_ddi.h, …

c vim makefile clang youcompleteme

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

Vim langmap打破插件(bépo)

我正在使用bépo键映射(http://bepo.fr)并寻求完美的vim映射.

到目前为止,我使用了很长的noremap列表,但是对于许多绑定(例如,运动awCtrl+ r),第一次击键很好地重新映射而不是其他的,我认为这是预期的行为,但这不是我需要的.

理想情况下,map除了键入文本(在插入模式下和键入替换例程)时,我的键盘将在更高级别(命令之前)完全重新映射.我正在寻找的似乎是langmap,但我使用它有问题.

我将这个langmap添加到我的.vimrc中,看起来很完美,但它破坏了我的一些插件.SuperTab现在插入<Plug>SuperTabForwardTab在插入模式下按下,我t<SNR>24_SelectCompletion(1)按下回车键时.

有人知道如何解决这个langmap问题或更好地重新映射我的键盘吗?

vim keymapping supertab

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

为什么要将变量赋给自己

一位同事写了这样一个函数(评论是我写的):

static void foo(void *arg)
{
    //arg is NOT global variable
    arg = arg;
    // call other function, but doesn't use arg
    foo2();
}
Run Code Online (Sandbox Code Playgroud)

是否有理由编写这样的代码?它有一些特殊用途吗?

c

6
推荐指数
2
解决办法
2400
查看次数

ubuntu中的echo -e选项不起作用

我的同事使用Ubuntu并且我使用openSUSE,我们使用相同的makefile编译相同的源代码,我的环境运行良好,但我的同事不能,总是输出无法识别的-e选项.我们检查makefile,只查找echo命令使用-e选项.

剂量Ubuntu的回声功能与其他功能不同?

在makefile中+++++更新,echo定义为:

TOOLSDIR =

ECHO = $(TOOLSDIR)echo -e

$(TOOLSDIR)是工具的目录,这个make文件可以检测编译环境,如果linux或者有CYGWIN:

$(TOOLSDIR)是空的,如果是windows,它会转到WIN32版本的echo工具目录,如:

TOOLSDIR = $(subst /,\,$(MAKEDIR)/tools/WIN32/)

在我们执行make之后,ubuntu将输出:

致命错误:L3900U:无法识别的选项'-e'.

但是,openSUSE没有此错误

++++更新echo -e

我在ubuntu中编写了一个测试makefile

all:
    echo -e hello
Run Code Online (Sandbox Code Playgroud)

它输出:

echo -e你好

你好

++++更新makefile测试在openSUE(12.1)和ubuntu(12.04)

all:
    echo -e "hello 1"
    echo -e hello 2
    echo -e he\nllo3
    echo -e "he\nllo4"
Run Code Online (Sandbox Code Playgroud)
  1. opensuse,输出是:

echo -e"你好1"

你好1

echo -e你好2

你好2

echo -e he \nllo3

henllo3

echo -e"he \nllo4"

llo4

  1. 在ubuntu中,输出是:

echo -e"你好1"

你好1

echo -e你好2

你好2 …

shell ubuntu makefile

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

缺少单独的调试信息

我尝试使用 gdb 来调试带有 coredump 的代码,但我遇到了:

Missing separate debuginfo for /lib/libc.so.6
Try: zypper install -C "debuginfo(build-id)=c4b9060b36834391b7b73976d38302a7584ae40e"
Missing separate debuginfo for /lib/ld-linux.so.2
Try: zypper install -C "debuginfo(build-id)=39c1043d2fcf5b72a2199cfb765d020b1faeb863"
Missing separate debuginfo for
Try: zypper install -C "debuginfo(build-id)=753a47afb9757471dc4823893adf607eb014b82f"
Missing separate debuginfo for /lib/libc.so.6
Try: zypper install -C "debuginfo(build-id)=c4b9060b36834391b7b73976d38302a7584ae40e"
Missing separate debuginfo for /lib/ld-linux.so.2
Try: zypper install -C "debuginfo(build-id)=39c1043d2fcf5b72a2199cfb765d020b1faeb863"
Run Code Online (Sandbox Code Playgroud)

然后我为 glibc 安装了 debuginfo 并将 glibc 更新到最新版本,我再次尝试 gdb,它仍然有一个信息:

Missing separate debuginfo for 
Try: zypper install -C "debuginfo(build-id)=753a47afb9757471dc4823893adf607eb014b82f"
Run Code Online (Sandbox Code Playgroud)

但它没有提到遗漏了哪一部分。

我的 GDB 版本是:

-> gdb --version
GNU gdb …
Run Code Online (Sandbox Code Playgroud)

gdb opensuse

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

解决“变量‘xxx’已声明但从未被引用”的最佳方法

-前提:

我知道它有很多方法可以忽略此警告,但我确实需要修复它,但不仅仅是为编译器添加一些标志来忽略它,因为我可以CFLAG在本地进行此 makefile修改,但无法更改编译/构建策略由于公司质量控制原因。这个问题我只想讨论谁来解决它,但不要忽略它们,非常感谢!

同时,不仅某些变量从未被引用过,而且还有警告:

function 'xxx' was declared but never referenced
Run Code Online (Sandbox Code Playgroud)

头文件中的类似问题,它有一些静态函数,仅在一个 c 文件中使用,但许多其他 c 文件包含此头文件。

此外,此代码运行在具有严重内存消耗的专用目标上,这意味着我需要处理 ROM 和 RAM 中的每一位。

-------问题如下所示-----------

我目前构建了一些由供应商提供的代码,其中包含很多警告,因为我想要一个无警告构建,因此,我将-Werrorforgcc--diag_error=[error_ref_number]for armcc.

经过上面的makefile修改后,我目前遇到的最多的警告是

variable 'xxx' was declared but never referenced
Run Code Online (Sandbox Code Playgroud)

它是由以下编码风格引起的:

在 中veryBIG.h,它定义了一些变量,例如(只是例如,但供应商的代码具有完全相同的方式):

static const int a = 10;
static const int b = 20;
static const int c = 30;
...
static const int z = xx;
Run Code Online (Sandbox Code Playgroud)

但是,许多 c 文件都包含这个 BIG 头文件,但只有这些 c 文件中的一个使用上述变量之一,例如a.c将使用变量 …

c gcc warnings makefile armcc

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

main.cc:5:30:致命错误:folder/file.h:没有这样的文件或目录

当我make在Ubuntu终端中使用type时,我得到:

main.cc:5:30: fatal error: folder/file.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

该文件夹存在于工作目录中,file.h存在于指定的文件夹中.

当我键入ls它时,它也列出了我的工作目录中的文件夹和文件.

奇怪的是,当我在geany中打开它并要求它在中找到该文件时

#include <folder/file.h>
Run Code Online (Sandbox Code Playgroud)

它发现它没有问题但是当它构建它时我得到了错误.

我需要设置一个标志,所以它包含文件夹吗?如果是这样,那看起来到底是什么样的?

c++ ubuntu makefile

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

如何将一些文件从dos格式转换为unix

我知道如何通过使用将文件格式从dos更改为unix dos2unix,但是如何在目录树下更改所有文件.可以dos2unix递归更改文件吗?

例如,我有一些如下文件:

TOPDIR
|
+-----dir1
|      |
|      +---file1,file2, file3
|
+-----dir2
       |
       +---file4,file5
Run Code Online (Sandbox Code Playgroud)

如何一次更改它们,或使用一些shell脚本?

linux bash shell dos2unix

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

gcc可以返回一个值吗?

我怎么知道gcc的返回值?

例如,我有一个c文件test.c,我只是gcc test.c在终端中运行.它可以报告当前编译是否遇到一些错误,但是如何知道gcc的这次编译过程的返回值?

现在我知道1手段有错误,但0不仅会返回警告而且还会编译好,如果有错误怎么办?如果我使用-Werror,它可能会停止编译,我不想停止编译

gcc

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

标签 统计

makefile ×4

c ×3

gcc ×2

shell ×2

ubuntu ×2

vim ×2

armcc ×1

bash ×1

c++ ×1

clang ×1

dos2unix ×1

gdb ×1

keymapping ×1

linux ×1

opensuse ×1

supertab ×1

warnings ×1

youcompleteme ×1