小编mab*_*ham的帖子

当我将新提交推送到gerrit时,如何从命令行设置主题?

在Gerrit(2.8)上传代码审查的git提交时,我希望能够设置主题字段(例如g-tune-pme-reform here https://gerrit.gromacs.org/#/c/3453/3).如何从命令行完成?可以在原来的git push中完成吗?

git gerrit

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

在Windows上等同于/ dev/urandom?

我的应用程序希望获得一个随机数,最好是熵(如果可用),但不需要加密质量,并且希望确保在系统熵池耗尽时调用不会阻塞(例如,在服务器场中) ).我知道CryptGenRandom(http://msdn.microsoft.com/en-us/library/windows/desktop/aa379942 (v=vs.85 ) .aspx),但它在不利熵条件下的阻塞行为是未标明.在Unix上,/ dev/urandom支持这个用例.Windows上是否有相同的功能?我宁愿避免使用非系统RNG来获得非阻塞语义.

windows prng

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

连接器如何应对快速返回的功能?

在C中,如果我有一个看起来像的函数调用

// main.c
...
do_work_on_object(object, arg1, arg2);
...

// object.c
void do_work_on_object(struct object_t *object, int arg1, int arg2)
{
  if(object == NULL)
  {
    return;
  }
  // do lots of work
}
Run Code Online (Sandbox Code Playgroud)

那么编译器会在main.o中生成很多东西来保存状态,传递参数(在这种情况下希望在寄存器中),以及恢复状态.

但是,在链接时可以观察到arg1和arg2没有用在快速返回路径中,因此清理和状态恢复可以短路.链接器是否会自动执行此类操作,或者是否需要启用链接时优化(LTO)才能使此类工作正常工作?

(是的,我可以检查反汇编代码,但我对编译器和链接器的行为以及多种体系结构感兴趣,所以希望从别人的经验中学习.)

假设分析显示此函数调用值得优化,我们是否应该期望以下代码明显更快(例如,无需使用LTO)?

// main.c
...
if(object != NULL)
{
  do_work_on_object(object, arg1, arg2);
}
...

// object.c
void do_work_on_object(struct object_t *object, int arg1, int arg2)
{
  assert(object != NULL) // generates no code in release build
  // do lots of work
}
Run Code Online (Sandbox Code Playgroud)

c linker micro-optimization lto

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

如果包含文件不存在,如何使CMake正常失败?

在CMakeLists.txt中,我想检查bzlib.h是否存在:

include(CheckIncludeFiles)
check_include_file(bzlib.h HAVE_BZLIB_H)
if(NOT HAVE_BZLIB_H)
    # How can I exit cmake with an error message if bzlib.h does not exists?
endif()
Run Code Online (Sandbox Code Playgroud)

c cmake

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

在同一个CMake项目中有多个make目标

在我的项目中,我有一个如下所示的makefile:

CXX = clang++
CFLAGS = -std=c++11 
COMMON_SOURCES = file1.cpp file2.cpp
TARGET_SOURCES = main.cpp
TEST_SOURCES = run_tests.cpp test_file1.cpp test_file2.cpp
COMMON_OBJECTS = $(COMMON_SOURCES:.c=.o)
TARGET_OBJECTS = $(TARGET_SOURCES:.c=.o)
TEST_OBJECTS = $(TEST_SOURCES:.c=.o)
EXECUTABLE = build/application
TEST_EXECUTABLE = build/tests
.PHONY: all target tests
all: target tests
target: $(EXECUTABLE)
tests: $(TEST_EXECUTABLE)
clean:
    rm build/tests & rm build/application &
$(EXECUTABLE): $(COMMON_OBJECTS) $(TARGET_OBJECTS)
    $(CXX) $(CFLAGS) $(LDFLAGS) $^ -o $@
$(TEST_EXECUTABLE): $(COMMON_OBJECTS) $(TEST_OBJECTS)
    $(CXX) $(CFLAGS) $(LDFLAGS) $^ -o $@
.c.o:
    $(CXX) $(CFLAGS) $< -o $@
Run Code Online (Sandbox Code Playgroud)

这让我运行make tests或者 …

project-management makefile cmake

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

如何在Intel的Windows编译器的命令行上禁用C++ 0x和/或C++ 11?

我的跨平台项目上的构建系统有一个英特尔Windows C++命令行,由于检测到编译器功能集,可能有也可能没有/ Qstd = c ++ 0x.对于大多数代码库,这很好用,但是对于少量的CUDA文件,我需要禁用更新的C++方言以适应nvcc包装器编译器的约束.

我应该如何在命令行的末尾添加类似/ Qstd = c ++ 98或/ Qnostd = c ++ 0x的内容,以便它覆盖任何早期的C++方言规范?

编辑:经过教育,这些标志实际上是英特尔编译器,我发现附加/ Qstd = c ++ 98可能是正确的方法.

nvcc c++11

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

C和/或C++预处理器的标准?

哪些标准文档指定了C和/或C++预处理器的行为?

维基百科建议http://www.open-std.org/JTC1/SC22/WG14/www/standards对C99有效.是吗?C++风味怎么样?

c c++ c-preprocessor

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