是否可以以不区分大小写的方式检查argparse选项?
import argparse
choices = ["win64", "win32"]
parser = argparse.ArgumentParser()
parser.add_argument("-p", choices=choices)
print(parser.parse_args(["-p", "Win32"]))
Run Code Online (Sandbox Code Playgroud)
结果是:
usage: choices.py [-h] [-p {win64,win32}]
choices.py: error: argument -p: invalid choice: 'Win32' (choose from 'win64','win32')
Run Code Online (Sandbox Code Playgroud) get_filename_component可用于删除/提取最长的扩展名.
EXT =文件名最长扩展名(.bc来自d/abc)
NAME_WE =没有目录或最长扩展名的文件名
我的名字中有一个带圆点的文件,所以我需要最短的扩展名:
set(MYFILE "a.b.c.d")
get_filename_component(MYFILE_WITHOUT_EXT ${MYFILE} NAME_WE)
message(STATUS "${MYFILE_WITHOUT_EXT}")
Run Code Online (Sandbox Code Playgroud)
报告
-- a
Run Code Online (Sandbox Code Playgroud)
但我想要
-- a.b.c
Run Code Online (Sandbox Code Playgroud)
在没有最短扩展名的情况下查找文件名的首选方法是什么?
有什么区别
COMPILE_FLAGS:编译此目标源时使用的其他标志.
和
COMPILE_OPTIONS:传递给编译器的选项列表.
就产生的VS2010解决方案而言,这些命令产生相同的结果:
target_compile_options(target PRIVATE "/option=test1")
set_target_properties(target PROPERTIES COMPILE_FLAGS "/option=test1")
set_target_properties(target PROPERTIES COMPILE_OPTIONS "/option=test1")
Run Code Online (Sandbox Code Playgroud) JS: i18n.t("SOME TEXT TO BE TRANSLATED.")
JSON: "SOME TEXT TO BE TRANSLATED.": "Een stukje tekst om te vertalen"
i18n.t("SOME TEXT TO BE TRANSLATED.") 给我 "SOME TEXT TO BE TRANSLATED.".
如果我删除"." (点)来自标签和函数t,而不是文本被翻译.
怎么解决这个?
Fortran是否具有C的标准函数/关键字等价物assert?
我assert在Fortran2003标准中找不到提到的.我发现如何使用预处理器的方法很少,但在这个答案中建议编写自己的断言.是否可以在不使用预处理器的情况下创建此类用户功能/子程序?
我希望这些断言对于发布版本是禁用的.
Fortran中抑制警告消息的最佳实践是什么,例如:
remark #7712: This variable has not been used.
Run Code Online (Sandbox Code Playgroud)
仅用于一个特定变量(API中我们不想破坏的想象函数)?
注2:gcc的相似之处:__attribute__((__unused__))或MACRO的其他常见C惯例
注意3:我对ifort尤其感兴趣,但是多编译器会更好。
是否可以控制printf的科学记法(e)打印的指数中显示的位数?
这段代码
#include <stdio.h>
int main(void) {
printf("%6.3e", 403.0);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
产生(取决于编译器/平台):
4.030e+002(VS2010)或4.030e+02(gcc 4.3.4)或甚至4.030e+2
在比较不同平台上生成的文件时,指数中不同的位数很容易混淆diff工具.
我使用范围枚举定义了一些标志,如下所示:
enum class Capability : int
{
NoCapabilities = 0,
SomethingCool = 1,
UberCool = 1 << 1,
EvenCooler = 1 << 2,
};
Q_DECLARE_FLAGS( Capabilities, Capability )
Run Code Online (Sandbox Code Playgroud)
现在,我尝试使用相等运算符:
Capabilities(DataCapability::NoCapabilities) == Capability::NoCapabilities
Run Code Online (Sandbox Code Playgroud)
testFlag我无法在当前示例中使用,因为NoCapabilities = 0. 如果枚举没有作用域(删除class关键字),则此方法有效。
显然,转换为 int ( static_cast<int>(NoCapabilities)) 是可行的,但它真的很难看。
解决这个问题的方法是什么?使用 0 零值并进行测试是一种不好的做法吗?