GCC 警告 - “警告:指令末尾的额外令牌 #include”

GCC Warning - "warning: extra tokens at end of #include directive"

提问人:Hemant 提问时间:12/11/2022 更新时间:12/11/2022 访问量:143

问:

在尝试包含自定义头文件时,我在 C 代码中目睹了以下错误 - “警告:#include 指令末尾的额外标记”,尽管即使在抛出错误后,程序似乎也能按预期工作。

但是为什么会出现警告消息呢?意义何在?

代码:

#include <stdio.h>
#include "sumOfTwo.h";
int main() {
    int a = 0;
    printf("Enter a: ");
    scanf("%d", &a);
    int b = 0;
    printf("Enter b: ");
    scanf("%d", &b);
    printf("%d + %d = %d", a, b, sumOfTwoNumbers(a, b));
    printf("\n");
    return 0;
}

头文件:

int sumOfTwoNumbers(int a, int b) {
    return a + b;
}

警告背后的原因是什么?代码和头文件如上所述。

c 标头 警告 头文件 gcc-warning

评论


答:

2赞 Eric Postpischil 12/11/2022 #1

主要问题

是指令末尾的额外标记。删除它。;#include

引号形式的指令的语法大致是“ 字符序列 ”。末尾没有分号。#include#include""

补充

...尽管即使在抛出错误之后,...

这不是“抛出”错误。编译器打印一条消息并继续。引发错误意味着生成异常:正常的程序控制流被中断并传输到异常处理程序,或者,如果没有处理程序,程序将终止。

...该程序似乎按预期工作。

一旦编译器识别出意外的标记,它就会忽略它。

头文件:...

不要在头文件中定义函数,除非是非常小的或必要的函数。头文件主要应用于不是函数或对象定义的声明。static inline

函数和对象应在源文件中定义,这些文件被编译并链接在一起。头文件应用于使一个源文件中定义的函数和对象在需要它们的其他源文件中已知。

评论

0赞 chrslg 12/11/2022
要是编译器说得很清楚就好了:-D