我有一个老项目针对DOS (是的,真的),我需要更新和重新编译。该项目使用OpenWatcom1.9C/ C++编译器和JWasm汇编程序。在任何情况下,我都不能使用其他编译器或汇编程序,因为该项目包含许多特定于他们的代码。
什么起作用:
我可以编译和链接项目,就像现在一样,与现有代码没有任何问题。我可以更改代码,并可以重新编译和链接项目。
我的问题是:
在更新和改进代码时,我想使用C99语法/扩展语法的一部分。特别要注意的是,我想在数组初始化器中使用指示符,比如:
double foo[2] = {
[0] = 1.5,
[1] = 0.5
};我读过一些地方(不记得哪里),只有gcc支持这种语法,但OpenWatcom1.9手册却相反。来自c_readme.pdf,第6.5章,第46页:
6.5与Open版本1.3的差异 以下是Open /C++1.4中所做的更改: ·对C99指定的初始化器的支持已添加到C编译器中,例如"struct {int a,b;} c= {.a=0,.b=1};“。数组也支持这一点,例如"int a4 = {=5,3=2};“。
请注意,我真的试图提供一个权威的链接到该文档,但现在openwatcom.org已关闭(再次),我不记得文件的确切位置在那个网站上。但是,该文档包含在OpenWatcom 1.9的安装存档中,您仍然可以下载该文档。例如,Windows是这里。
当我试图编译一个在数组初始化器中使用指示符的源文件时,我只是从相应的行中得到一个语法错误。我已经尝试过POSIX编译器驱动程序以及普通的C编译器,但是两者都会产生相同的语法错误。下面是我使用的命令行:
owcc.exe -c -v -mtune=686 -g3f -Wstop-after-errors=20 -fmessage-full-path -fno-short-enum -fptune=586 -mcmodel=h -O0 -finline-math -Wextra -std=c99 -b DOS -fo=obj\Release\foo.obj foo.cpp
wpp.exe -6 -bt=DOS -d3 -e20 -ef -ei -er -fpi87 -fp5 -mh -od -wx -zdf -zff -zgf -zt256 -zu -fo=obj\Release\foo.obj foo.cpp那么,我需要做什么才能在OpenWatcom C/C++ 1.9的数组初始化器中使用指示符呢?
发布于 2021-05-12 09:12:13
您可以使用打开Watcom编译器叉编译代码(另请参阅选项-za99) -
#include <stdio.h>
int main() {
double foo[2] = {[0] = 1.5, [1] = 0.5};
printf("foo => {%f, %f}\n", foo[0], foo[1]);
return 0;
}产出-
Open Watcom C/C++ x86 32-bit Compile and Link Utility
Version 2.0 beta Dec 31 2020 01:11:17 (64-bit)
Copyright (c) 2002-2020 The Open Watcom Contributors. All Rights Reserved.
Portions Copyright (c) 1988-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
wcc386 st.c
Open Watcom C x86 32-bit Optimizing Compiler
Version 2.0 beta Dec 31 2020 00:56:05 (64-bit)
Copyright (c) 2002-2020 The Open Watcom Contributors. All Rights Reserved.
Portions Copyright (c) 1984-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
st.c: 9 lines, included 799, 0 warnings, 0 errors
Code size: 89
wlink @__wcl__.lnk
Open Watcom Linker Version 2.0 beta Dec 31 2020 00:49:52 (64-bit)
Copyright (c) 2002-2020 The Open Watcom Contributors. All Rights Reserved.
Portions Copyright (c) 1985-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
loading object files
searching libraries
creating a Windows NT character-mode executablehttps://stackoverflow.com/questions/66257544
复制相似问题