Ranran0000005 2024-08-08 22:39 采纳率: 100%
浏览 93
已结题

发现在MSVS2022中”#pragma once“不起作用

最近我发现在MSVS2022中”#pragma once“不知为何不起作用,仍然报错(#ifndef也一样)
(具体代码改了一下,放在底下)

img

img

而相同的文件在Dev C++中却可以通过编译

img


为什么呢?

不是拼写错误,因为在DevC++里可以编译

//主文件
#include<iostream>
using namespace std;
#include"messagebox.h"
#include"fun2.cpp"
#include"fun3.cpp"
int main() {
    cout<<notice("JIDHIUHF");
    cout<<"\n"<<fun2()<<"\n"<<fun3();
    //if(a)return 1;
    return 0;
} 
//fun2.cpp
#pragma once
#include"messagebox.h"
int fun2()
{
    return notice("???"); 
}
//fun3.cpp
#pragma once
#include"messagebox.h"
int fun3(){
return notice("!!!");
}
//messagebox.h

#pragma once
#include"messagebox.cpp"
int notice(const char []);
//messagebox.cpp
#pragma once
#include<windows.h>
int notice(const char a[] = NULL)
{

    return MessageBox(NULL, LPCWSTR(a), TEXT("提示"), MB_YESNO);

}
  • 写回答

12条回答 默认 最新

  • 急速光粒 2024-08-09 09:17
    关注

    对#program once理解不太对,应该定义在头文件中不是cpp中。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(11条)

报告相同问题?

问题事件

  • 系统已结题 8月17日
  • 已采纳回答 8月9日
  • 修改了问题 8月9日
  • 修改了问题 8月8日
  • 展开全部