- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我编写了以下代码来玩转《21 世纪 C》一书中描述的匿名结构的特定 C11 习语。
#include <stdio.h>
#include <math.h>
typedef struct Price {
double close;
double high;
double low;
} Price;
typedef struct OLHC {
union { //union allows the dual benefits of the seamless anon. struct and code-reuse
struct Price; //an anonymous struct but not explicitly re-defined
Price p;
};
double open;
} OHLC;
double range(Price p){ //behaviour defined for struct Price
return(p.high - p.low);
}
double travelRange(OHLC p){ //re-uses behaviour defined for struct Price
return (fabs(p.open - p.low) + range(p.p) + fabs(p.high - p.close));
}
int main(){
OHLC msft={.close=33.4, //seamless access to members
.open=32.1,
.high=35.5,
.low=30.23};
printf("Today's travel Range for MSFT was %f\n",travelRange(msft));
}
我可以使用 gcc48 或 gcc49 如下所示在没有警告的情况下编译它:
gcc-4.9 -std=c11 -fms-extensions -lm -o c11 c11.c
我还可以让它在我的 OS X mavericks macbook 上编译和运行,但有一个警告:
cc -std=c11 -fms-extensions -lm -o c11 c11.c
警告是:
c11.c:19:5: warning: anonymous structs are a Microsoft extension[-Wmicrosoft]
是否有任何版本的 gcc 或 clang 可以仅使用 std=c11 标志编译此文件而不会出现警告。匿名结构/union 是 C11 标准的一部分,只是尚未实现,还是它们如上所用不符合标准?
编辑:只是为了澄清上面的代码旨在允许重用为基本结构编写的代码,但同时获得无缝访问包含原始结构的派生结构的所有成员的好处匿名。这是通过匿名结构及其相应的命名类型的 union 来实现的。太糟糕了,这不合规,因为我认为这是一个非常好的小习惯用法。
最佳答案
typedef struct OLHC {
union {
struct Price;
Price p;
};
double open;
} OHLC;
不是 C11。它是带有扩展名的 C,并且只允许在带有 -fms-extensions
选项的 gcc
中使用。
C11 具有匿名结构和 union ,但是:
struct Price;
在你的 struct OLHC
中不允许作为 C11 匿名结构的一部分。
Is there any version of gcc or clang which will compile this file with just the std=c11 flag without warnings.
不,C 至少需要一个警告。
关于c - 为什么对匿名结构的命名引用,下面描述的习语需要 -fms-extensions 由 clang/gcc 编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20108938/
我正在使用 Air 将网络摄像头流式传输到 FMS(Flash 媒体服务器),如您所知,这在台式机上没有问题,但我可以从手机(Android、iOS)进行流式传输吗?这是我的代码: var nc:Ne
我正在尝试访问 harvard cs 109 视频,但出现以下错误 -'连接尝试被 FMS 服务器拒绝。连接失败' 最佳答案 我联系了 havard 并得到了以下回复:- 亲爱的夏尔马, 感谢您联系哈
我有一些 .mov 文件想要流式传输到 Flash 媒体服务器。我已经尝试在终端中通过 FFMPEG 命令流式传输单个 .mov 并且它可以工作,FMS 可以显示我实时流式传输的内容。 ffmpeg
我一直在为使用 JW Player 和 Flash Media Server 的客户维护一个视频系统来流式传输一些视频。直到最近,这还只是以一种比特率推出一个流。这显然不适合所有人,所以我一直在研究带
因为 iPhone 根本不支持 Flash。 是Darwin流媒体服务器吗? 最佳答案 您需要使用 Apple 所说的 HTTP Live Streaming 。单击该链接可访问 Apple 的概述文
我想知道是否可以将视频从 FMLE(Flash Media Live Encoder)直接流式传输到媒体播放器,而无需 FMS(Flash 媒体服务器)的中介,因为我不想将其重新流式传输给许多用户?
当我按照安装 FMS 3.0.5 的步骤操作时在 Linux 上,出现此错误: [root@server FMS_3_0_5_r601]# ./installFMS ERROR: Your archi
我有一个具有一些属性的结构: struct a { char* id; int a; int b; int c; } 我还有一个具有相同属性的结构,但没有 id。 st
使用 AMS (FMS) 服务器。 用户语音广播到服务器。ffmpeg混合来自 rtmp 的声音和来自磁盘的音乐,并发送到服务器 问题是声音或音乐在时间上不重合。 有没有办法通过ffmpeg同步? 例
如果 FLV 的音频是使用 Flash Media Server 从实时流中录制的并使用 NellyMoser 编解码器,我该如何解码它? 我正在编写一个使用 FFmpeg 处理多个 FLV 的脚本,
我们正在本地网络中部署一个媒体管理系统。 FMS 将用于为本地网络中的媒体提供服务。因为我们最多只有 100 个用户,而且我们有一个强大的双 4 核 xeon,计划是在同一台机器上安装 IIS 和 F
ffmpeg -i rtmp:/vid2/recordings -acodec copy -vcodec copy -y captured.flv 或 ffmpeg -i rtmp://localho
GCC 有一个选项,-fms-extensions,它允许使用匿名结构成员: struct a { int x; } struct b { int y; struct a; }
我正在尝试使用 FMS3.5 流式传输一系列 MP4,其中一些文件似乎在结束前几秒钟被删除。我使用了下面的 ffmpeg bat 进程,当我将帧速率增加到 500 时,它似乎已经自我纠正,尽管这导致文
我有一个 Xcode 项目,我使用一些带有 Visual Studio C 代码的 3rd 方库用 Clang 编译。 在第 3 方库中,头文件中使用了匿名结构(我无法真正改变它)。因此我收到此警告:
我正在尝试将实时 RTMP 流视频从 link1 转发到 link2。但是,当视频在输入端停止或暂停时,我的 java 应用程序将停止读取数据包并收到错误“无法读取 RTMP header 数据包”。
解决方法: 在cmakelists.txt中添加设置: set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fms-extensions") 问题解决 下面是cmakel
我正在尝试将 FLV 的音频解码为可播放的格式。我试图使用这个 SO 帖子:FMS FLV to mp3..例如,但我的 FLV 是用 Speex 编码的。 我在 Fedora 15 机器上用 --e
我一直在 EC2 上使用 Wowza,现在尝试在 AWS 中通过 CloudFront Distribution 使用 FMS Stack。 到目前为止,我设法使用 m1.large FMS Stac
我遇到了这个 comparison chart这表明 FMS 的成本约为 4.5 三角钢琴(相比之下,wowza 为 995 美元,Red5 为免费)。由于我正处于选择/学习技术的阶段,我宁愿免费使用
我是一名优秀的程序员,十分优秀!