小编vit*_*aut的帖子

如何检查文件在Linux shell中是否只包含零?

如何'\0'使用shell命令检查Linux中的大文件是否仅包含零字节()?我可以为此编写一个小程序,但这似乎是一种矫枉过正.

linux shell file

12
推荐指数
4
解决办法
4422
查看次数

构建有效的外部DSL

我有什么工具可以构建一个真正的,诚实的,善良的外部DSL.不,我不是在讨论滥用Ruby,Boo,XML或其他现有语言或语法,我的意思是真正的外部DSL - 我自己的语言.

我知道有一些语言工作台正在开发中,我听说过像"反讽"这样的东西.而且,当然还有ANTLR,Lex/Yaac等,但我担心这些对于我正在尝试的事情来说太复杂了.

请谈谈您可能已经使用或听过的DSL构建工具以及您对它的帮助及其缺点的印象.

compiler-construction dsl

11
推荐指数
2
解决办法
1611
查看次数

为什么GCC允许从私有嵌套类继承?

请考虑以下代码:

class A {
  class B {};
};

template <typename C>
class D : A::B {};

void f() {
  D<int> d;
}
Run Code Online (Sandbox Code Playgroud)

D<int>继承自A::B哪个私有嵌套类.我原以为这是一个错误,但GCC接受这个代码.它是海湾合作委员会的一个错误还是我错过了什么?

c++ gcc g++ nested-class private-members

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

为什么isnan含糊不清以及如何避免它?

既然isnan可以是宏(在C++ 98中)或在命名空间std中定义的函数(在C++ 11中),这个简单的例子说明了编写在两种情况下都有效的代码的明显(并且可能是天真的)方式.

#include <cmath>

int main() {
  double x = 0;
  using namespace std;
  isnan(x);
}
Run Code Online (Sandbox Code Playgroud)

但是,编译它会在GCC(使用-std = c ++ 11)和Clang中产生错误:

test.cc: In function ‘int main()’:
test.cc:6:10: error: call of overloaded ‘isnan(double&)’ is ambiguous
   isnan(x);
          ^
test.cc:6:10: note: candidates are:
In file included from /usr/include/features.h:374:0,
                 from /usr/include/x86_64-linux-gnu/c++/4.8/bits/os_defines.h:39,
                 from /usr/include/x86_64-linux-gnu/c++/4.8/bits/c++config.h:426,
                 from /usr/include/c++/4.8/cmath:41,
                 from test.cc:1:
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:234:1: note: int isnan(double)
 __MATHDECL_1 (int,isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));
 ^
In file included from test.cc:1:0:
/usr/include/c++/4.8/cmath:626:3: note: constexpr bool std::isnan(long double) …
Run Code Online (Sandbox Code Playgroud)

c++ gcc compiler-errors cmath c++11

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

malloc分配的内存在什么时候获得类型?

这个问题询问malloc根据最佳答案分配的对象的动态类型是什么:

返回值malloc是未初始化存储的块.在该存储中没有构造任何对象.因此它没有动态类型.

这带来了另一个问题:在什么时候说返回的存储malloc获取类型是有意义的.例如:

void *p = malloc(sizeof(int));
int *pi = (int*)p;
Run Code Online (Sandbox Code Playgroud)

我们可以说pi上面指的是动态类型的对象,int尽管它是未初始化的吗?

c++ malloc memory-management language-lawyer

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

C++字符串格式化,如Python"{}".格式

我正在寻找一种快速而简洁的方式来打印一个漂亮的表格格式,正确对齐单元格.

在c ++中是否有一种方便的方法来创建具有一定长度的子串的字符串,如python格式

"{:10}".format("some_string")
Run Code Online (Sandbox Code Playgroud)

c++ io formatting fmt

10
推荐指数
3
解决办法
8504
查看次数

如何使用 fmt 库而不会出现“Undefined Symbols for Architecture x86_64”

我正在尝试在我的 C++ 项目中使用 fmt ( https://github.com/fmtlib/fmt ) 格式化标头库。

我已在主文件顶部添加了核心头文件的路径,如下所示:

#include "../third_party/fmt/core.h"

但是当我尝试调用任何函数时,例如:

string message = fmt::format("The answer is {}", 42);

我收到以下错误:

Undefined symbols for architecture x86_64:
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > fmt::v5::internal::vformat<char>(fmt::v5::basic_string_view<char>, fmt::v5::basic_format_args<fmt::v5::buffer_context<char>::type>)", referenced from:
      std::__1::basic_string<std::__1::enable_if<internal::is_string<char [17]>::value, fmt::v5::internal::char_t<char [17]>::type>::type, std::__1::char_traits<std::__1::enable_if<internal::is_string<char [17]>::value, fmt::v5::internal::char_t<char [17]>::type>::type>, std::__1::allocator<std::__1::enable_if<internal::is_string<char [17]>::value, fmt::v5::internal::char_t<char [17]>::type>::type> > fmt::v5::format<char [17], int>(char const (&) [17], int const&) in main.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** …
Run Code Online (Sandbox Code Playgroud)

c++ fmt

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

在C++ 11中处理零参数可变参数模板

请考虑以下人为示例:

template <typename T, typename... Args>
struct A {
  typedef T Type;
};
Run Code Online (Sandbox Code Playgroud)

A在使用零参数的情况下使用1个或多个参数可以按预期方式失败:

错误:模板参数数量错误(0,应为1或更多)

是否有可能A处理零模板参数的情况,如果没有参数则定义A::Type,int如果有,则处理第一个模板参数?

c++ templates variadic-templates c++11

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

为什么 lsof 在 Mac 上将内存映射文件的文件描述符报告为 txt 而不是 mem?

lsof test在 Mac OS X 上运行时得到以下输出,其中test是内存映射文件的名称:

COMMAND     PID     USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
filesyste 40535 buildbot  txt    REG    1,6        3 2466028 test
Run Code Online (Sandbox Code Playgroud)

请注意,这txt是在FD现场报告的。但是,根据文档lsof

   FD         is the File Descriptor number of the file or:

                   mem  memory-mapped file;
                   txt  program text (code and data);
Run Code Online (Sandbox Code Playgroud)

那么问题来了:为什么是lsof报道txt而不是mem现场FD

该文件映射如下:

mmap(0, length, PROT_READ, MAP_FILE | MAP_PRIVATE, fd, 0)
Run Code Online (Sandbox Code Playgroud)

其中length是长度,fd是文件的描述符。

macos mmap lsof memory-mapped-files

8
推荐指数
0
解决办法
1894
查看次数

将浮点数转换为字符串的最快 C++ 方法

我遇到了将浮点数转换为字符串的问题,这to_string对我来说太慢了,因为我的数据可能涉及数百万个浮点数。

我已经有了如何快速写出这些数据的解决方案。

然而,在解决了那个问题之后,我很快意识到浮点数到字符串的转换产生了很大的影响。

那么,除了使用其他非标准库之外,还有其他想法或解决方案吗?

c++ floating-point formatting c++11

8
推荐指数
2
解决办法
5801
查看次数