小编Kil*_*zor的帖子

命名空间中的分号.必要?

使用命名空间时,我需要用分号完成它?例如,当我将类的前向声明放入命名空间时,许多人不包含分号,但它似乎是可选的.

分号是通过添加还是删除来添加功能或更改当前功能?

谢谢.

c++ namespaces

12
推荐指数
2
解决办法
6596
查看次数

MacOSX上的Docker无法正确翻译卷中的文件所有权

我在Docker中使用一个简单的Linux机器.在Linux中使用它,我克隆我的dev存储库并将repo作为卷安装在Docker中.然后,当我进入Docker容器时,卷中的文件属于组1000中的用户1000(一切都很好,因为Docker正确保留了所有文件所有者).现在我试图在macOS中做同样的事情,但在我的macOS机器上,我的uid是501而我的gid是20.但是当我去容器时,我意识到里面的文件有gid和uid 0,同样的作为根.如何在Docker中保留文件所有权?

macos docker

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

如何用QTest验证是否抛出了异常?

我在QT C++世界中说过.我正在使用QTest类进行TDD.我想验证在某些情况下我的类正在测试中抛出异常.使用谷歌测试,我会使用类似的东西:

EXPECT_THROW(A(NULL), nullPointerException);
Run Code Online (Sandbox Code Playgroud)

QTest中是否存在类似此功能的内容?O至少有办法吗?

谢谢!

qt qtestlib

9
推荐指数
2
解决办法
4099
查看次数

使用cmake构建后复制或移动库

在我的项目中有一个包含第三方库的文件夹(google test,zlib,...).我想在构建所有这些库时将库放在一个公共文件夹中.我试图用cmake做这个,但我遇到了问题.我正在尝试这段代码:

add_subdirectory(gtest-1.6.0)    
add_custom_command(
            TARGET gtest_main 
            POST_BUILD
            COMMAND ${CMAKE_COMMAND} -E copy ${SRC_LIB_DIR}/*.a ${DST_LIB_DIR})
Run Code Online (Sandbox Code Playgroud)

我认为问题可能是目标gtest主要没有在这个级别定义,而是在较低级别

cmake

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

在kotlin中生成一个lambdas列表

我是Kotlin和lambdas的新手,我正在努力理解它.我正在尝试生成100个随机数的列表.这有效:

private val maxRandomValues = (1..100).toList()
Run Code Online (Sandbox Code Playgroud)

但是我想做那样的事情:

private val maxRandomValues = (1..100).forEach { RandomGenerator().nextDouble() }.toList()
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我正在试图弄清楚如何使用生成的值forEach来使用toList()

lambda kotlin

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

如何做我自己的自定义运行时错误类?

我正在尝试做一个简单的自定义runtime_error.我定义了这个类:

#include <string>
#include <stdexcept>


namespace utils{

 class FileNotFoundException: public std::runtime_error{
  public:
   FileNotFoundException():runtime_error("File not found"){}
   FileNotFoundException(std::string msg):runtime_error(msg.c_str()){}
 };

};
Run Code Online (Sandbox Code Playgroud)

然后我抛出错误:

bool checkFileExistence( std::string fileName )
 {
  boost::filesystem::path full_path = boost::filesystem::system_complete(boost::filesystem::path(fileName));
  if (!boost::filesystem::exists(full_path))
  {
    char msg[500];
    _snprintf(msg,500,"File %s doesn't exist",fileName.c_str());
    throw new FileNotFoundException(msg);
  }
 }
Run Code Online (Sandbox Code Playgroud)

我使用try/catch块

    try{
          checkFileExistence(fileName);
     }
   catch(utils::FileNotFoundException& fnfe)
        {
          std::cout << fnfe.what() << std::endl;
     }
Run Code Online (Sandbox Code Playgroud)

运行时错误被正确抛出为FileNotFoundException,但是从未到达带有std :: cout的行,并且没有行被写入控制台.

欢迎所有想法.谢谢!

c++ exception

7
推荐指数
2
解决办法
6805
查看次数

如何最小化C++中的编译时间

我编写了一个脚本,生成一个包含版本,svn标签,内部版本号等常量的头文件.然后,我有一个类,用这个信息创建一个字符串.

我的问题如下:由于文件是在每次编译中创建的,编译器会检测到标题已更改,并强制重新编译大量文件.我猜问题是在头文件的情况下.我的项目是一个库,标题必须位于"世界接口"头文件中(它必须是公共的).

我需要一些建议来最小化这个编译时间或减少强制重新编译的文件.

c++

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

Eclipse cdt的"导出项目设置"不会导出库设置

我正在尝试导出CDT项目的项目设置.我创建导出导航到FILE-> export ...并选择c/c ++项目设置.

导入此设置时,我发现包含目录已正确导入,但库是空白的.库和包含都是工作区相关的路径......

这是一个错误还是一个功能?如何导出要添加的库路径和库?

c++ eclipse-cdt

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

如何在makefile中执行条件语句

我正在尝试使用命令行var来选择我们用来编译的工具包.在命令行中我使用如下行:

make all-arm OUR_TOOLKIT=1
Run Code Online (Sandbox Code Playgroud)

并且,在每个makefile暗示,我把这包括

include ARM_Compiler.inc
Run Code Online (Sandbox Code Playgroud)

然后,在每个makefile中,

all: setToolkit $(otherOperations)
Run Code Online (Sandbox Code Playgroud)

而ARM_Compiler的内容是选择编译器的逻辑:

setToolkit: 
ifdef OUR_TOOLKIT
    TOOLKIT=1
endif
ifdef CUSTOMER_TOOLKIT
    TOOLKIT=2
endif

ifeq ($(TOOLKIT), 1)
    $(info "=========Our toolkit selected======================")
    rm=/bin/rm -f
    CC= arm-linux-c++ -fPIC
    CXX= arm-linux-c++ -fPIC
    LINK= arm-linux-c++ -shared -Wl
    AR= ar cq
    RANLIB= ranlib
    STRIP=arm-linux-strip 

    # para que se utilicen las herramientas y librerias del cross compiler
    PATH:=$(PATH):/path/to/our/toolkit
    LD_LIBRAY_PATH:=$(LD_LIBRAY_PATH):/path/to/our/toolkit          
endif

ifeq ($(TOOLKIT), 2)
    $(info "================Customer toolkit selected====================")
    rm=/bin/rm -f
    CC= arm-none-linux-gnueabi-c++ -fPIC
    CXX= arm-none-linux-gnueabi-c++ -fPIC
    LINK= arm-none-linux-gnueabi-c++ -shared -Wl …
Run Code Online (Sandbox Code Playgroud)

makefile gnu-make

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

如何在没有 unshallow 的情况下对克隆进行 unshallow?

我正在尝试减少大型存储库的历史记录。我做了一个浅克隆

git clone --depth --no-single-branch 1000 url
Run Code Online (Sandbox Code Playgroud)

然后我用这个脚本检查了所有分支

#!/bin/bash
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master `; do
   git branch --track ${branch#remotes/origin/} $branch
done
Run Code Online (Sandbox Code Playgroud)

在那之后,我改变了原点

git remote add new-origin new-url
git remote rm origin
git remote mv new-origin origin
Run Code Online (Sandbox Code Playgroud)

然后我推动了新的存储库。我的问题是系统不允许将浅克隆推送到新存储库。如果我返回我的旧存储库以取消浅显:

git fetch --unshallow
Run Code Online (Sandbox Code Playgroud)

然后整个回购再次同步。你知道有一种方法可以在没有 unshallow 的情况下对我的克隆进行 unshallow 吗?

谢谢

git

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

标签 统计

c++ ×4

cmake ×1

docker ×1

eclipse-cdt ×1

exception ×1

git ×1

gnu-make ×1

kotlin ×1

lambda ×1

macos ×1

makefile ×1

namespaces ×1

qt ×1

qtestlib ×1