gpt4 book ai didi

c - 我现在应该担心 gcc -pedantic 选项吗?

转载 作者:太空宇宙 更新时间:2023-11-04 01:25:52 26 4
gpt4 key购买 nike

我刚刚开始学习 C 作为一种爱好。我正在用“C 编程:一种现代方法”一书来做这件事。那里有一个名为 pun.c 的第一个程序。这是代码:

#include <stdio.h>

int main(void)
{
int int_figure;
float float_figure;

int_figure = 12;
float_figure = 12.0;
printf("To C or not to C, this is a question\n");
printf("%d\n", int_figure);
printf("%.2f\n", float_figure);
return 0;
}

其实没关系,因为我想问的是用gcc编译任何.c文件都是一样的。

所以在书中有一些gcc的选项可以在编译过程中发现错误。其中一个是-Wall,另一个是-pedantic。因此,当我使用此选项编译文件时,终端中的输出如下:

nickdudaev|c $ gcc -o -Wall pun pun.c
pun: In function `_fini':
(.fini+0x0): multiple definition of `_fini'
/usr/lib/gcc/x86_64-unknown-linux-gnu/5.1.0/../../../../lib/crti.o:(.fini+0x0): first defined here
pun: In function `data_start':
(.data+0x0): multiple definition of `__data_start'
/usr/lib/gcc/x86_64-unknown-linux-gnu/5.1.0/../../../../lib/crt1.o:(.data+0x0): first defined here
pun: In function `data_start':
(.data+0x8): multiple definition of `__dso_handle'
/usr/lib/gcc/x86_64-unknown-linux-gnu/5.1.0/crtbegin.o:(.data+0x0): first defined here
pun:(.rodata+0x0): multiple definition of `_IO_stdin_used'
/usr/lib/gcc/x86_64-unknown-linux-gnu/5.1.0/../../../../lib/crt1.o:(.rodata.cst4+0x0): first defined here
pun: In function `_start':
(.text+0x0): multiple definition of `_start'
/usr/lib/gcc/x86_64-unknown-linux-gnu/5.1.0/../../../../lib/crt1.o:(.text+0x0): first defined here
pun: In function `_init':
(.init+0x0): multiple definition of `_init'
/usr/lib/gcc/x86_64-unknown-linux-gnu/5.1.0/../../../../lib/crti.o:(.init+0x0): first defined here
/tmp/cc2TRR93.o: In function `main':
pun.c:(.text+0x0): multiple definition of `main'
pun:(.text+0xf6): first defined here
/usr/lib/gcc/x86_64-unknown-linux-gnu/5.1.0/crtend.o:(.tm_clone_table+0x0): multiple definition of `__TMC_END__'
pun:(.data+0x10): first defined here
/usr/bin/ld: error in pun(.eh_frame); no .eh_frame_hdr table will be created.
collect2: error: ld returned 1 exit status

虽然程序运行正常。

nickdudaev|c $ ./pun
To C or not to C, this is a question
12
12.00

所以问题。

  1. 我是否应该在这个(学习)阶段担心这个输出并完全使用这些选项?
  2. 我可能有一些系统错误吗?因为任何文件编译的输出都是一样的。也许有什么东西没有正确安装?

我试图在谷歌上搜索,但我唯一找到的是对 gcc 选项作用的描述。但没有关于可能的输出以及如何处理它的信息。

最佳答案

这个:

gcc -o -Wall pun pun.c

看起来不对。您说的是 -Wall,您应该在其中说出输出的名称,即 -o 的参数。

尝试:

gcc -Wall -o pun pun.c

基本上,您将旧二进制文件 pun 作为源文件提供给 gcc。

关于c - 我现在应该担心 gcc -pedantic 选项吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31008133/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com