小编pap*_*p42的帖子

使用T恤输出时保持颜色

我正在尝试获取程序的输出(有颜色)并输出tee.我希望输出在终端(stdout)上有颜色,但不在输出文件上.这可能吗?

bash

16
推荐指数
2
解决办法
5791
查看次数

使用-std = gnu99和内联函数时编译错误

以下代码:

#include <stdio.h>
inline int myfunc (int x) {
    return x+3;
}

int main () {

    printf("%d", myfunc(2));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我使用-std=gnu99标志时不编译(我正在用gcc编译).这是它抛出的错误:

gcc -std=gnu99 -c main.c -o main.o
gcc -std=gnu99 main.o -o main
main.o: In function `main':
main.c:(.text+0x15): undefined reference to `myfunc'
collect2: ld returned 1 exit status
make: *** [main] Error 1
Run Code Online (Sandbox Code Playgroud)

-std=gnu99省略时编译没有问题.有谁知道链接器为什么会抱怨-std=gnu99使用?

c gcc

14
推荐指数
2
解决办法
6574
查看次数

无法解释编译器警告

我的编译器(gcc)在声明的行上抛出警告(而不是错误!)fp:

int fd = open("filename.dat", O_RDONLY);
FILE* fp = fdopen(fd, "r"); // get a file pointer fp from the file descriptor fd
Run Code Online (Sandbox Code Playgroud)

这些是警告:

main.c: In function ‘main’:
main.c:606: warning: implicit declaration of function ‘fdopen’
main.c:606: warning: initialization makes pointer from integer without a cast
Run Code Online (Sandbox Code Playgroud)

我不明白这些警告,因为返回值fopen是a FILE*.我在这里犯的错是什么?

编辑:我包括stdio.h(我也在Linux上).

c

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

在struct定义中定义宏

在下面结构的定义中,有一个带有宏定义(#define)的行.那条线究竟做了什么?我理解它是数组的第一个条目的别名h_addr_list,但它看起来仍然很奇怪.是h_addr结构的成员hostent吗?这个定义只在结构范围内吗?

struct  hostent
{
  char    *h_name;        /* official name of host */
  char    **h_aliases;    /* alias list */
  int     h_addrtype;     /* host address type */
  int     h_length;       /* length of address */
  char    **h_addr_list;  /* list of addresses from name server */
  #define h_addr  h_addr_list[0]  /* address, for backward compatiblity */
};
Run Code Online (Sandbox Code Playgroud)

c macros structure

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

如何避免使用"自我"这么多

我正在编写一个程序来模拟一个小型的物理系统,并且在写这样的东西时变得越来越恼火:

K = 0.5 * self.m * self.v**2

在上面的例子中,方程式很短且很容易理解,但是我的情况很多self,整个事情最终看起来像一团糟.我知道python总是需要self引用类成员,但有没有办法让代码看起来不像是马赛克self?

编辑:我通常做的事情如下:

var = self.var

并继续使用var而不是self.var.后来我做了:

self.var = var

但这似乎真的很愚蠢.解决这个问题的pythonic方法是什么?

python

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

将图像标题与 asciidoc 中的图像对齐

我插入了一个块图像,如下所示:

[[myimage]]
image::fig1.png[align="center", title="My caption"]
Run Code Online (Sandbox Code Playgroud)

不幸的是,图像居中,但标题左对齐。我也尝试这样做:

[[myimage]]
.My caption
image::fig1.png[align="center"]
Run Code Online (Sandbox Code Playgroud)

但结果没有改变。如何使图像标题也居中对齐?

我使用此命令生成 HTML 输出(使用 xhtml11 作为后端没有区别):

asciidoc -v -a asciimath -d 文章 -b html5 -o file.html file.txt

asciidoc

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

什么%.*s代表printf?

可能重复:
"%.*s"在c中的printf中的含义是什么

我知道这个问题肯定在其他地方有问题,但搜索"%.*s"对SO没有任何意义.有人可以向我解释以下内容吗?

printf("%.*s", len, buffer);

c c++

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

函数参数类型的奇怪位置

可能重复:
C函数语法,参数列表后声明的参数类型

我浏览了一些C代码并找到了inet_pton函数的定义(在.c文件中):

int
inet_pton(af, src, dst)
    int af;
    const char *src;
    void *dst;
...
Run Code Online (Sandbox Code Playgroud)

这里有趣的是,函数的参数以我以前从未见过的方式指定了它们的类型.在相应的头文件中,参数类型照常指定:

extern int inet_pton (int __af, __const char *__restrict __cp,
              void *__restrict __buf) __THROW;
Run Code Online (Sandbox Code Playgroud)

我的问题是:这是某种C技巧吗?您是否可以始终在其范围内定义函数的参数类型?

c

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

当我使用STL在Linux上编译C++程序时,STL库是如何链接的?

当我编译一个使用g ++使用STL的程序时,库如何链接到我的程序?动态还是静态?

对我来说静态听起来很奇怪,因为这意味着每个使用STL的C++程序都必须在内部包含它.另一方面,动态链接声音对我来说也很奇怪,因为所有的OOP内容我都没有看到库如何动态链接并且还支持不同类型的对象......

那究竟发生了什么?

c++ linux g++ dynamic-linking static-linking

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

如何在python中获取没有名称的参数

我正在尝试编写一个python脚本,它接受可选的输入参数和一个输入文件:

./script --lines 1 file.txt

应该采用1行数(--lines)然后file.txt作为输入文件.但是,getopt甚至没有看到"file.txt",因为它前面没有参数名称.

我怎样才能获得文件名?我已经考虑过使用sys.arv[-1],但这意味着当我运行时:

./script --lines 1

然后1将作为输入文件名.然后我的脚本会抛出一个错误(如果没有名为的文件1存在):

error: file '1' no found

这有效,但不是一个很好的解决方案.有没有解决的办法?

python getopt command-line-arguments

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

为什么 bash 有两组不同的选项?

Bash 似乎将其选项集分为两种类型。我有兴趣了解其中的原因。

为了澄清,如果我运行该shopt命令,我会得到一个选项列表及其状态(开/关),但如果我运行shopt -o,我会得到一个不同的选项列表。shopt甚至( )的文档help shopt似乎也做出了这种区分:

  -o    restrict OPTNAMEs to those defined for use with `set -o'
Run Code Online (Sandbox Code Playgroud)

换句话说,有些选项可以用 来设置set -o,但有些选项只能用shopt命令来设置。为什么 bash 包含两组不同的选项?为什么不简单地使用该命令设置所有选项shopt?

bash

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