微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么MSVC ++给我一个错误,如果我试图编译一个包头没有换行符? C ++ /视窗

我正在使用MSVC ++编程一个简单的窗口,并且包含了一个菜单的资源文件

MYMENU MENU disCARDABLE //etc.

我用类似的定义创build了一个文件“resourcedef.h”

#define ID_MYMENU_FILE_CLOSE 1002

我可以包含它在我的main.cpp文件没有错误,但是,当我把它包含在资源文件中,我得到的错误

.resourcedef.h(9) : Fatal error RC1004: unexpected end of file found

(resourcedef.h正好是9行)。 当我添加一个换行符时.h的结尾,

如果没有设置Nginx,如何添加标题

Nginx上过期

确定IP标头的大小。 为什么和别人不一样?

正确导出Linux头文件,模块

linux模块编译错过文件夹asm

//lines 1 - 8 #define ID_MYMENU_FILE_OPEN 1001

所以有第十个空行(没有出现在SO上),它编译得很好。 如果我把任何东西放在第十行,甚至一个注释,编译器给我一个错误。 有谁知道是什么原因造成的,我该如何解决

在Linux内核中,头包含错误

Apache CXF – 设置HTTP标头

内容长度标题始终为零

在文本文件末尾省略尾随的换行符是个不错的主意 – 有许多工具在除非存在的情况下才能正常工作。 (一些文本编辑甚至会提醒你,这是缺少的。)

尾随的换行符是文本文件的标准行为 – 为什么不跟着流,只是把一个放在那里。 每个人都这样做。 8-)

很久以前,版本2左右的MSVC ++(1994-ish)不能正确处理文件末尾的“部分”行。 例如:

header.h

#ifndef __HEADER_H #define __HEADER_H void foo(); #endif // <-- no newline here

main.cpp中

#include "header.h" #include "other.h"

在这种情况下,解析后的预处理器将会看到如下的文字

#ifndef __HEADER_H #define __HEADER_H void foo(); #endif#include "other.h"

错误在于最后一行将如上所示一起运行,并且"other.h"文件将不被包含。 当时用IDE,很容易意外地创建了一个没有尾随换行符的文件,并遇到上述情况。

幸运的是,这个bug早已修复。 它看起来像你已经找到了一种情况,编译器警告说,不希望在一行中遇到文件的结尾。 这通常被认为是一件好事。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐