c++ 使用 time() 并同时包含 - 哪一个优先?

2024-04-03

我使用带有 Zsh 5.0.2、Vim 7.3 和 GCC 4.8.0 的 GNU/Linux 发行版来学习 C++。

由于函数的重新定义,以下代码将无法编译foo:

#include <iostream>

int foo()
{
    return 0;
}

int foo()
{
    return 0;
}

int main()
{
    foo();
    return 0;
}

尝试编译它:

» g++ -g -pedantic -std=c++11 -Wall -Wextra -Weffc++ foo.cpp -o foo
fail.cpp: In function ‘int foo()’:
fail.cpp:8:5: error: redefinition of ‘int foo()’
 int foo()
     ^
fail.cpp:3:5: error: ‘int foo()’ previously defined here
 int foo()
     ^

然而,我注意到海湾合作委员会(g++,具体来说)自动包括<time.h>没有我明确指示它这样做。在我写的一个程序中std::time()已使用但我忘记了#include <ctime>并使用std::前缀这导致time() from <time.h>用于代替相应的函数<ctime>。我很好奇 - 当 和 都包含时将使用哪个 time() ?据我所知,两者都有一个同名的函数(并且它们都以相似或相同的方式工作),请参阅:

cppreference.com:time.h time() http://en.cppreference.com/w/c/chrono/time

cppreference.com:ctime 时间() http://en.cppreference.com/w/cpp/chrono/c/time

考虑以下代码:

#include <ctime>
#include <time.h>
#include <iostream>

int function1()
{
    using namespace std;
    cout << "function4: " << time(NULL) << endl;
    return 0;
}

int function2()
{
    using std::time;
    std::cout << "function3: " << time(NULL) << std::endl;
    return 0;
}

int function3()
{
    std::cout << "function2: " << std::time(NULL) << std::endl;
    return 0;
}

int function4()
{
    std::cout << "function1: " << time(NULL) << std::endl;
    return 0;
}

int main()
{
    function1();
    function2();
    function3();
    function4();
    return 0;
}

它可能并不完美,但我希望我的观点能够得到理解。在这里,我明确地包括了<time.h>为清楚起见。前三个以我所知道的方式声明std是要使用的。第四个函数简单地调用time()- 对我来说这似乎是其中之一<time.h> and <ctime>可以调用变体。

问题一:为什么此 (function4) 不会因不明确而导致错误或警告?

问题2:使用哪种变体以及什么决定一个变体优先于另一个变体?

问题3:有没有一种方法可以在运行或编译过程中输出完整的函数名称以查看使用的库?


如果你往里面看<ctime>,你会发现以下内容:

#include <time.h>
namespace std
{
   using ::time;
}

这意味着即使您包括<ctime>,它调用其中的一个<time.h>. 这是实际标题的链接 http://gcc.gnu.org/onlinedocs/gcc-4.6.2/libstdc++/api/a00839_source.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c++ 使用 time() 并同时包含 - 哪一个优先? 的相关文章

  • 如何自定义 DataTable 列的排序

    我需要对数据表列的值进行排序 该列包含字符串 整数或混合文本 例如 数据表列包含如下值 23 18 12 store 23 store a1 1283 25 如果我使用对值进行排序Dataview sort 方法会按此顺序产生 12 128
  • 如何向 UWP 项目添加 .NET dll 引用?

    我有几个适用于 NETv4 x 的 NET dll 项目 我将版本更改为 4 6 1 并重新构建 没有出现问题 当我尝试从 UWP 项目向它们添加引用时 出现错误 项目的目标是 NETCore 而文件引用的目标是 NET框架 这不是受支持的
  • LINQ to XML - 如何正确使用 XDocument

    现在我首先要说的是 这确实是一项任务 然而 在我遇到 Linq to XML 语法之前 我几乎已经完成了它 我有 2 个课程 曲目和 CD 现在作为作业的一部分 我创建了一张 CD 然后向其中添加了一些曲目 在搜索了大量完美解释了如何从 x
  • Linq Where 本地计数器关闭在 VS watch 中的结果不同

    我尝试删除前 3 个元素array与 LinQWhere扩展功能 这是一个例子 var array new 1 2 3 4 5 6 7 8 9 var count 3 var deletedTest1 0 var test1 array W
  • C++ 在 Vector 中使用不可分配的对象

    我想将对象列表存储在std vector 但对象包含引用且无法分配给 但是 我可以复制构造该对象 我能想到的唯一选择是使用指针来包装对象并在需要分配指针时重新设置指针 但这样做的语法会显着降低可读性 特别是在使用迭代器时 我更喜欢另一种选择
  • C中有const吗?

    这个问题可能很幼稚 但是 有没有constC 中的关键字 从哪个版本开始 之间有任何语义和 或句法差异吗const在 C 和 C 中 C 和 C 之间在语法上没有差异const关键字 除了一个相当晦涩的关键字 在 C 中 自 C99 起 您
  • 防止复制构造和返回值引用的分配

    如果我有一个函数返回对类实例的引用 但我无法控制其源 比如说list
  • C#:使用 System.Text 和 System.Text.RegularExpressions 之间的区别

    在 ASP NET C 应用程序中 我注意到为了使用 Regex 和 StringBuilder 我必须将两者都放在 using System Text using System Text RegularExpressions 从简单的角度
  • 推送 Lua 表

    我已经创建了一个Lua表C 但我不知道如何将该表推入堆栈顶部 以便我可以将其传递给 Lua 函数 有谁知道如何做到这一点 这是我当前的代码 lua createtable state libraries size 0 int table i
  • 如何在不使用reinterpret_cast的情况下使用dlsym()加载函数?

    我正在尝试使用 clang tidy 来强制执行 C 核心指南 虽然它确实有很多有效点 但有一件事我无法真正解决 dlsym 返回一个void 我需要以某种方式将其转换为正确的函数指针 为此 我使用reinterpret cast 由于指南
  • 在生产者-消费者情况下使用条件变量

    我正在尝试了解条件变量以及如何在生产者 消费者情况下使用它 我有一个队列 其中一个线程将数字推入队列 而另一个线程从队列中弹出数字 当生产线程放置一些数据时 我想使用条件变量向消费线程发出信号 问题是有时 或大多数时候 它只将最多两个项目推
  • 为什么以下代码不允许我使用 fgets 获取用户输入但可以使用 scanf?

    这是一个更大程序的简短摘录 但该程序的其余部分无关紧要 因为我认为我能够隔离该问题 我怀疑这与我使用 fgets 的方式有关 我读过 最好使用 fgets 而不是 scanf 但我似乎无法让它在这里正常工作 当我使用以下代码时 程序不会给我
  • C++ Primer 5th Edition 错误 bool 值没有指定最小大小?

    bool 的最小大小不应该是 1 个字节吗 这有点学术性的东西 尽管它们会转换为数字 并且 与其他所有事物一样 它们最终将基本上由计算机内存中的数字表示 但布尔值不是数字 你的bool可以取值true 或值false 即使您确实需要至少 1
  • OpenMP C 程序运行速度比顺序代码慢

    我是 OpenMP 的新手 正在尝试并行化 Jarvis 的算法 然而事实证明 与顺序代码相比 并行程序花费的时间要长 2 3 倍 难道问题本身就不能并行化吗 或者我并行化它的方式有问题 这是我针对该问题的 openMP 程序 其中有 2
  • 通过 MSBuild 调用 cl.exe 时无限期挂起

    我正在尝试在我的 主要是 C 项目上运行 MSBuild 想象一下一个非常庞大的代码库 Visual Studio 2015 是有问题的工具集 Windows 7 SP1 和 VS 2015 更新 2 即使使用 m 1 从而迫使它仅使用一个
  • 为什么我不能在扩展 List 的类中调用 OrderBy?

    我有一堂课 Deck 其中包含一个名为的方法Shuffle 我正在致力于重构Deck延长List
  • 有没有办法让 VS2010 在我的方法中扩展或收缩 try 块?

    我的代码有很多 try catch finally 块 与我在 VS2010 中的方法不同 除了添加区域之外 我无法在开发时扩展或收缩这些区域来隐藏内容 try vm R vm Qu vm T vm D vm Fil vm Type vm
  • 从 C# 中的 .NET SecureString 读取单个字符?

    WPF 的PasswordBox 返回一个SecureString 它对窥探者隐藏密码 问题是你最终必须获得密码的值 而我在网上找到的建议都涉及将值复制到字符串中 这会让你回到窥探者的问题 IntPtr bstr Marshal Secur
  • Windows 上 libcurl 的静态库[重复]

    这个问题在这里已经有答案了 如何将此库 libcurl 静态链接到 exe 我努力了 disable share enable static 没有帮助 我使用的是MingW32 有没有一种简单的方法来静态链接这个库 这样我的应用程序就不再有
  • 在 C# 中读取/写入命令行程序

    我正在尝试与 C 的命令行程序进行对话 它是一个情绪分析器 它的工作原理如下 CMD gt java jar analyser jar gt Starting analyser 这是我想从我的 C 程序插入内容的地方 例如 I love y

随机推荐

  • 展平数据框

    我有这个嵌套数据框 test lt structure list id c 13 27 seq structure list 1 c 1997 1997 1997 2007 2 c 2007 2007 2007 2007 2007 2007
  • 如何通过innerText获取元素

    如果我知道文本标签包含哪些内容 如何获取 html 页面中的标签 例如 a SearchingText a 您可以使用 xpath 来完成此任务 var xpath a text SearchingText var matchingElem
  • pytesseract找不到指定的文件

    我的代码很简单 如下所示 import pytesseract from PIL import Image img Image open C temp foo jpg img load i pytesseract image to stri
  • castle IOC - 解决循环引用

    关于我的 MVP 实现的简单问题 目前我有下面的代码 其中演示者和视图都是通过容器解析的 然后演示者调用 View Init 将自己传递给视图 然而 我想知道是否有一种方法可以让容器修复我的循环引用 视图 gt 演示者 演示者 gt 视图
  • Codeigniter 会话不会取消设置

    我在一个社区工作 我想让用户注销 但它不会取消设置用户数据 S 你知道为什么吗 这是我的控制器功能 function logOff this gt session gt flashdata reports Du er logget af r
  • 如何使用 MAMP 在 mac 上安装 phpunit 3.5

    我正在尝试使用 MAMP 在 Mac OS X 上安装 PHPUnit 3 5 我确实通过 MAMP 的 PEAR 安装了 PHPUnit 3 5 这一切都是正确的 phpunit 位于 Applications MAMP bin php5
  • 如何将键值对加载到hive表中?

    以下是我的数据集 Jun name balaji id 101 Mar name kumar id 102 创建的表 create table sample month string name string id int row forma
  • ZeroMQ套接字在什么情况下会丢弃或无法传递消息?

    是否有某种规范或其他解释来描述正常情况 对于每种通信类型 您可以预期在 ZeroMQ 套接字上发送的消息不会被 所有 侦听进程接收 例如 我有一个实验程序 它基本上假设所有订阅者PUB套接字接收在该套接字上发送的所有消息 在初始化握手之后
  • Azure AD B2C 审核日志 - 图形 API - 查询选项不起作用

    我正在尝试检索我们租户的 Azure AD 用户登录审核日志 为此 我使用 Microsoft 的图形 API 1 https graph microsoft com v1 0 auditLogs signIns filter create
  • 使用seaborn白色风格没有显示主要刻度线并且无法恢复

    当我使用seaborn 白色 样式生成绘图时 我看到了主要的勾号labels但我没有看到任何重大的问题marks 使用 将主要刻度线设置得更大 matplotlib inline import seaborn as sns import m
  • java.lang.ClassCastException:org.springframework.security.core.userdetails.User无法转换为model.User

    我在我的应用程序中使用 Spring Security 我需要在我的应用程序的控制器中登录用户详细信息 为此 我正在使用这段代码 User loggedInUser User SecurityContextHolder getContext
  • VPC 中的 AWS Lambda 有时无法访问互联网

    我有部署到 VPC 的 Lambda 此部署有以下配置 专有网络 192 168 0 0 16 公共子网 A 192 168 32 0 20 具有 NAT 网关和到 Internet 网关的路由 0 0 0 0 0 私有子网 A 192 1
  • 不明白 Monitor.Pulse() 的必要性

    根据MSDN http msdn microsoft com en us library ateab679 aspx Monitor Wait 释放对象上的锁并阻塞当前线程 直到它 重新获取锁 然而 我读到的有关 Wait 和 Pulse
  • 如何使用脚本更改 Xcode 11 中的构建设置版本控制?

    由于 Xcode 11 已将版本更改为 MARKETING VERSION 并将构建更改为 CURRENT PROJECT VERSION 构建设置中有新字段 由于以下原因 我如何使用脚本更改此值 xcrun agvtool new ver
  • OpenMP 并行区域中嵌套函数的内部编译器错误

    我尝试调用GSL库的蒙特卡罗积分子程序来进行一些数值计算 因为我的 for 循环相当简单 这意味着不同运行的结果是独立的 所以我预计使用 OpenMP 进行并行化应该非常简单 然而 当我编译它时 它总是显示 内部编译器错误 分段错误 并且什
  • 在 x86_64 linux 中重定位超过 2GB 的程序时出现链接器错误?

    我有一个用户程序 通常编译为有一个入口点0x400460我必须重新定位才能有一个从以下位置开始的入口点2GBLinux 中加载的共享库 例如 linux vdso so 1 gt 0x00007fff109cd000 libc so 6 g
  • 访问 Lua 类型元表

    显然 getmetatable 可以访问几种类型的元表 getmetatable getmetatable getmetatable newproxy true 然而 似乎您无法获取其他类型的元表 除了函数 似乎无法访问数字 布尔值或 ni
  • 静态变量是线程安全的吗? C#

    我想创建一个存储数据表的类 这将阻止我的应用程序在每次我想要检索它时导入详细信息列表 因此 这应该完成一次 我相信下面的代码会这样做 但我不确定它是否是线程安全的 下面的代码位于我的三层应用程序的业务层部分 它将数据表返回到表示层 publ
  • 使用 Apple 登录:如何为现有应用程序实现它?

    Apple 于 2019 年 6 月 3 日发布的最新重大更新中 有一项功能使用 Apple 登录 https developer apple com sign in with apple get started 有关 如何在应用程序中使用
  • c++ 使用 time() 并同时包含 - 哪一个优先?

    我使用带有 Zsh 5 0 2 Vim 7 3 和 GCC 4 8 0 的 GNU Linux 发行版来学习 C 由于函数的重新定义 以下代码将无法编译foo include