Sy++
2022-02-22 17:27
采纳率: 100%
浏览 36

C++在.h头文件中命名空间中定义变量,为什么没有出现重定义的错误,而且在其他.cpp文件里也不能使用?

//.h文件
#pragma once
#include <iostream>
using namespace std;

namespace test1 {
    int make;
    void func();
}

namespace test2 {
    void func();
}


//test.cpp文件
#include <iostream>
#include "test.h"

void test1::func()
{
    std::cout << "func" << std::endl;
}

命名空间.cpp文件
#include<iostream>
#include"test.h"
using namespace std;

//2.
namespace A {
    int a;
    namespace B {
        int b;
    }
}

//3.
namespace A {
    int c;
}

//5.
void test()
{
    namespace C = A;
}

int a;

int main()
{
    int a;
    test1::func(); //6.
    
    return 0;
}

若我要在命名空间.cpp文件中使用.h文件中的make时,错误提示是test1命名空间中不包含make,但是我在定义make后编译时,也没有提示重定义的问题?

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

相关推荐 更多相似问题