预处理指令后面有意外的标记 - 预期换行符

3

这是我的代码。

#include <stdio.h>
#include <stdlib.h>

int main(void) {
int a, b, somma, massimo;
printf("Inserire il primo valore: A =");
scanf_s("%d", a);
printf("Inserire il secondo valore: B =");
scanf_s("%d", b);
if (b > 0) {    //1
    printf("B = %d e positivo", b);
} else {
    printf("B = %d e negativo", b);
}
if (a % 2 == 0){    //2
    printf("A = %d e pari", a);
} else {
    printf("A = %d e dispari", a);
}
somma = a + b;  //3
printf("A + B = %d", somma);
if (a < 0) {    //4
    a = -a;
}
if (b < 0) {
    b = -b;
}
massimo = a + b;
printf("Il numero più grande ottenibile con questi due numeri A, B e %d", massimo);
}

当我尝试编译时,出现以下警告:

1>c:\users\mario\documents\visual studio 2015\projects\controlla a e b\main.c: 错误 C4335:检测到 Mac 文件格式:请将源文件转换为 DOS 或 UNIX 格式

1>c:\users\mario\documents\visual studio 2015\projects\controlla a e b\main.c(1): 警告 C4067:预处理指令后面出现了意外的标记-预期是换行符


确保文本编译器的输入字符集编码与存储文本文件时使用的编码相同。例如,gcc 默认使用 UTF-8,因此应以相同格式存储文本。对于VS,您必须自己检查。对于字符串文字,您必须确保目标编码已正确配置(在 gcc 上也默认为 UTF-8)。 - too honest for this site
3个回答

4

从你的文件中删除所有非ASCII字符,或者将你的编辑器和编译器设置为接受UTF-8。


1
坏建议,因为 OP 想要包含本地语言。 - too honest for this site
2
尝试使用一个简单的“Hello World”程序来检查您的工具链。但我99%确定您仍然在某个地方有非ASCII字符。 - YSC
1
最有可能是一个分号; - Digital Human
5
如果其他人也遇到了这个问题,我的情况是在include语句的结尾多了一个引号。#include "SomeFile.h"" <<< 多余的引号 - Levitikon
4
我也遇到了这个问题,原来是分号“;”。 - Treasure Dev
显示剩余3条评论

1
我发现这个错误可能是由于一个构造不良的#define引起的,例如:
#define USE_THIS  true;

...

#if USE_THIS
<some code>
#endif

显然你没有使用分号。
这与上面的示例不完全相关,但我在这里包含它以防万一有人搜索这个错误信息。

0
除了错误的编码类型之外,这个警告也可能由于错误的行尾序列而产生。所以尝试更改相同的内容。
在VSCode中,点击右下角的CRLF(或LF,取决于默认设置)。会弹出一个窗口,选择所需的序列。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接