C++ 重新编译C+时出错+;OSX上的程序(未声明的时间)

C++ 重新编译C+时出错+;OSX上的程序(未声明的时间),c++,g++,osx-lion,C++,G++,Osx Lion,OS:Mac OS X 10.8.4 编译器:g++4.1 实用工具:作为Xcode开发工具下载 我正在尝试重新编译一个.cpp程序,该程序是使用g++4.1在某些Linux系统(不确定是哪个)上编写的。我试图在OSX中重新编译它,而不是g++4.1 问题是有些声明使用类型uuu time\t,例如: __time_t lastDataRx; __time_t lastHealthSent; __time_t lasterrorsent; 这会导致以下错误: "error: ‘__time_t

OS:Mac OS X 10.8.4
编译器:g++4.1
实用工具:作为Xcode开发工具下载

我正在尝试重新编译一个.cpp程序,该程序是使用g++4.1在某些Linux系统(不确定是哪个)上编写的。我试图在OSX中重新编译它,而不是g++4.1

问题是有些声明使用类型uuu time\t,例如:

__time_t lastDataRx;
__time_t lastHealthSent;
__time_t lasterrorsent;
这会导致以下错误:

"error: ‘__time_t’ was not declared in this scope"
包含的头文件包括:

#include <stdio.h>
#include <sys/time.h>
#include <signal.h>
#include <getopt.h>
#include <fcntl.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include "accel.h"
#include <arpa/inet.h>
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括“加速h”

其中包含

<代码>包含看起来更像C而不是C++…无论如何,标准类型是(在
/
中定义)。很可能
\uuuu time\t
在Linux上是一种特定于实现的类型,但在Mac OS X上并不存在。我不知道为什么原始代码直接使用了一种实现类型而不是标准的实现类型,但你不能像gx所说的那样,用
time\t
替换出现的
\uu time\t
,将平台时间更换为时间。好容易的全局搜索和替换。以双下划线开头的名称应视为实现的私有名称。这段代码在Linux上也被破坏了——它只是编译正常。x-ref的问题不太可能与您的问题相关(如果您想确定,请使用
gcc-H
进行检查)。@gx主文件是一个.cpp,它引用了一些.c文件,这可能与最佳实践相去甚远。但无论如何,这个问题似乎可以通过使用你们建议的更改声明来解决。我不确定拥有uu时间是否有特殊的原因,但如果它只是标准时间的一个不同版本,那么我想它不会有什么坏处。我不确定它是GCC还是GNU C库(我想是这个库),但是像
u时间u t
这样的名称是用于定义名称的内部名称,没有
前缀。它允许在不考虑编译器选项的情况下定义名称(因为它位于“为实现保留的”命名空间中)。