首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >__FILE__宏将意外地连接到C中的前一个字符串

__FILE__宏将意外地连接到C中的前一个字符串
EN

Stack Overflow用户
提问于 2017-07-26 07:11:36
回答 1查看 119关注 0票数 3

这是我问题中最简单的例子:

代码语言:javascript
复制
#include<stdio.h>
int main() {
        printf("%s:%s\n", "I am in file" __FILE__);
}

当我忘记在"__FILE__“宏之前插入逗号时,我希望得到一个编译错误,但只需要得到一个警告。因此,输出将是:

我正在做文件测试。

  • 第一个字符串将是:"I in file“与__FILE__宏连接。
  • 第二个字符串将未定义。

有人能告诉我为什么这不是编译错误吗?

EN

回答 1

Stack Overflow用户

发布于 2017-07-26 07:18:33

虽然编译器可以在例如printfscanf (因为它知道这些函数的格式-字符串)中这样做,但通常不能对变量参数函数这样做。

如果您创建了vararg函数,编译器如何知道多少参数是正确的?答案是它不能,因此C规范没有说它必须是一个错误。

编译器(一些编译器,而不是所有编译器)对printfscanf发出警告仅仅是因为编译器的创建者足够好地添加它。这不是必需的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45319887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档