注册 登录
编程论坛 C++教室

内联全局变量怎么运行啊?我在main.cpp中加入#include<iostream>也不能运行

叶纤 发布于 2020-02-23 18:19, 2662 次点击
程序代码:

怎么让这三个文件运行?
constants.cpp:
namespace constants
{
    // actual global variables
    extern const double pi { 3.14159 };
    extern const double avogadro { 6.0221413e23 };
    extern const double my_gravity { 9.2 }; // m/s^2 -- gravity is light on this planet
}
constants.h:
#ifndef CONSTANTS_H
#define CONSTANTS_H

 
namespace constants
{//由于实际变量位于名称空间内,因此前向声明也必须位于名称空间内
   
// since the actual variables are inside a namespace, the forward declarations need to be inside a namespace as well
    extern const double pi;
    extern const double avogadro;
    extern const double my_gravity;
}

 
#endif
main.cpp:
#include "constants.h" // include all the forward declarations

int main()
{
    std::cout << "Enter a radius: ";
    int radius{};
    std::cin >> radius;

 
    std::cout << "The circumference is: " << 2 * radius * constants::pi;
}






//已经解决//
constants.h
#ifndef CONSTANTS_H
#define CONSTANTS_H
 
// define your own namespace to hold constants
namespace constants
{
    inline constexpr double pi { 3.14159 }; // note: now inline constexpr
    inline constexpr double avogadro { 6.0221413e23 };
    inline constexpr double my_gravity { 9.2 }; // m/s^2 -- gravity is light on this planet
    // ... other related constants
}
#endif
main.cpp:

#include "constants.h"
 
int main()
{
    std::cout << "Enter a radius: ";
    int radius{};
    std::cin >> radius;
 
    std::cout << "The circumference is: " << 2 * radius * constants::pi;
}





[此贴子已经被作者于2020-2-23 20:27编辑过]

12 回复
#2
雪影辰风2020-02-23 19:18
我有点不太懂什么是内联全局变量,我在网上看了一下,inline好像不能修饰常量
我把你的代码复制以后把所有的inline都去掉了,加上#include<iostream>运行都正确了
你在看看吧,反正我是没有见过inline修饰常量的
#3
雪影辰风2020-02-23 19:25
inline的使用是有所限制的,inline只适合涵数体内代码简单的涵数使用,不能包含复杂的结构控制语句例如while、switch,并且不能内联函数本身不能是直接递归函数(即,自己内部还调用自己的函数)。
#4
雪影辰风2020-02-23 19:26
以下是引用雪影辰风在2020-2-23 19:25:50的发言:

inline的使用是有所限制的,inline只适合涵数体内代码简单的涵数使用,不能包含复杂的结构控制语句例如while、switch,并且不能内联函数本身不能是直接递归函数(即,自己内部还调用自己的函数)。

我在网上查的,估计inline只能修饰函数
#5
叶纤2020-02-23 20:30
内联全局变量我已经解决了,如果三个文件那怎么解决?
#6
雪影辰风2020-02-23 20:33
是那个自定义头文件吗?
#7
雪影辰风2020-02-23 20:38
自定义头文件要复制到cpp文件目录下,或者是在""中打上头文件目录,或者是吧头文件加入到编译器的标准头文件库里
#8
叶纤2020-02-23 21:36
回复 7楼 雪影辰风
这个代码变成一个代码我会做,可是分成三个文件,我就不知道怎么加include“   “这个了
#9
雪影辰风2020-02-23 22:50
我有点没听懂你说的分成三个文件什么的,私聊吧,不占用回复栏,我留个联系方式Q:3359521238,或者是发短信息
#10
叶纤2020-02-24 13:18
不好意思,刚看见我先把贴结了
#11
return_02020-02-24 15:46
你按我头文件贴所说的,把文件拷贝到那个文件夹就好了
#12
叶纤2020-02-24 17:21
回复 11楼 return_0
解决了,是我太粗心少写了extern,导致没有外部链接
#13
return_02020-02-25 09:49
你如果是提交题目的话,你直接把所有功能写到一起就行了
1