我最近注意到Java在Java中的基本算术运算方面的特殊性.使用以下代码
byte a = 3;
byte b = 4;
byte c = a * b;
Run Code Online (Sandbox Code Playgroud)
我收到"类型不匹配"编译错误...
在Java基本的算术运算(+,-,*,/)只对基本数据类型的执行int和高阶(long,double,等),而在算术运算byte和short是第一投地int,然后评估?
到目前为止,我仍然不明白为具有许多子目录的CMake项目执行此操作的"最佳实践"是什么.
假设我有一个项目层次结构,每个子目录中都有源文件......
--CMake Project Source dir
|-- SubD1
|-- SubSubD1
|-- SubD2
Run Code Online (Sandbox Code Playgroud)
我通常要做的是add_subdirectory(SubD1)分别对根目录的CMakeLists.txt中的D2和SubD1目录的CMakeLists.txt中的子目录进行递归,同时在每个子目录中声明变量并使它们在根目录中可见与PARENT_SCOPE.
这意味着如果文件Source2.cpp存在于`SubSubD1'中,我就是这样做的
set(SUBSUBD1_SOURCES Source2.cpp PARENT_SCOPE)
Run Code Online (Sandbox Code Playgroud)
并希望能够在我的SubD1目录中使用SUBSUBD1_SOURCE .随后,说Source.cppSubD1中存在,我会这样做
set(SUBD1_SOURCES ${SUBSUBD1_SOURCES} Source.cpp PARENT_SCOPE)
Run Code Online (Sandbox Code Playgroud)
这样所有来源都可以在根目录中看到.
问题当然是当变量到达根目录时不保留文件路径.什么我目前做的是所有的源文件,我set,我包括${CMAKE_CURRENT_LIST_DIR},使它
set(SUBSUBD1_SOURCES ${CMAKE_CURRENT_LIST_DIR}/Source2.cpp PARENT_SCOPE)
Run Code Online (Sandbox Code Playgroud)
和
set(SUBD1_SOURCES ${SUBSUBD1_SOURCES} ${CMAKE_CURRENT_LIST_DIR}/Source.cpp PARENT_SCOPE)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我可以说,add_executable(myProg SUBSUBD1_SOURCES)在我的CMake项目的根目录中执行.
有没有更好的方法来执行此操作,然后必须始终在所有源文件前包含CMake变量?
维基百科基本上给所有关于我需要知道,但它可能会如何useful..in在PID的冲突将不会在父进程创建另一个子进程的事件存在只是一个简单的线条僵尸进程的可能的信息.
那么这实际上是如何"有用的"?如果要删除命名的僵尸进程而不是保留在那里,那么PID是不是可用?
或者还有其他原因可以解释为什么僵尸进程应该存在?
我试图在模板函数中进行一些L_p范数计算
template<typename Number>
Number foo(const Eigen::MatrixBase<Number>& matrix)
{
return matrix.lpNorm<1>();
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试调用,CLang会在行尾输出错误的"预期表达式" foo(matrix).如果我使用具体定义的(双)矩阵,lpNorm可以正常工作.我如何处理这个案子?