c - C中的复数语法错误(使用VScode)
问题描述
我想在 c 中使用复数(使用 VScode),但它不起作用。
其他没有复数的c代码可以编译执行成功,
我已经包含了 complex.h 并将 Cstandard 设置为 C99
这是我的代码和错误信息
#include <stdio.h>
#include <complex.h>
int main()
{
double complex z1 = 1.0 + 3.0 * I;
double complex z2 = 1.0 - 4.0 * I;
printf(" values: Z1 = %.2f + %.2fi\tZ2 = %.2f + %.2fi\n",
creal(z1),
cimag(z1),
creal(z2),
cimag(z2));
getchar();
}
错误信息:
c:\grchen\C\code\practice\dft.c: In function 'int main()':
c:\grchen\C\code\practice\dft.c:6:20: error: expected initializer before 'z1'
double complex z1 = 1.0 + 3.0 * I;
^~
c:\grchen\C\code\practice\dft.c:7:20: error: expected initializer before 'z2'
double complex z2 = 1.0 - 4.0 * I;
^~
c:\grchen\C\code\practice\dft.c:12:18: error: 'z1' was not declared in this scope
creal(z1),
^~
c:\grchen\C\code\practice\dft.c:12:18: note: suggested alternative: 'y1'
creal(z1),
^~
y1
c:\grchen\C\code\practice\dft.c:14:18: error: 'z2' was not declared in this scope
creal(z2),
^~
The terminal process terminated with exit code: 1
Terminal will be reused by tasks, press any key to close it.
> Executing task: g++ -g c:\grchen\C\code\practice\dft.c -o C:\grchen\C\code\dft.exe <
c:\grchen\C\code\practice\dft.c: In function 'int main()':
c:\grchen\C\code\practice\dft.c:6:20: error: expected initializer before 'z1'
double complex z1 = 1.0 + 3.0 * I;
^~
c:\grchen\C\code\practice\dft.c:7:20: error: expected initializer before 'z2'
double complex z2 = 1.0 - 4.0 * I;
^~
c:\grchen\C\code\practice\dft.c:12:18: error: 'z1' was not declared in this scope
creal(z1),
^~
c:\grchen\C\code\practice\dft.c:12:18: note: suggested alternative: 'y1'
creal(z1),
^~
y1
c:\grchen\C\code\practice\dft.c:14:18: error: 'z2' was not declared in this scope
creal(z2),
c_cpp_properties.json:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/lib/gcc/i686-w64-mingw32/8.1.0/include/c++",
"C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/lib/gcc/i686-w64-mingw32/8.1.0/include/c++/i686-w64-mingw32",
"C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/lib/gcc/i686-w64-mingw32/8.1.0/include/c++/backward",
"C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/lib/gcc/i686-w64-mingw32/8.1.0/include",
"C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/lib/gcc/i686-w64-mingw32/8.1.0/include/c++/tr1",
"C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/include",
"${workspaceFolder}/**"
],
"cStandard": "c99",
"cppStandard": "c++98",
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"intelliSenseMode": "msvc-x64",
"browse": {
"path": [
"C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/lib/gcc/i686-w64-mingw32/8.1.0/include/c++",
"C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/lib/gcc/i686-w64-mingw32/8.1.0/include/c++/i686-w64-mingw32",
"C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/lib/gcc/i686-w64-mingw32/8.1.0/include/c++/backward",
"C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/lib/gcc/i686-w64-mingw32/8.1.0/include",
"C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/lib/gcc/i686-w64-mingw32/8.1.0/include/c++/tr1",
"C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/include",
"${workspaceFolder}/**"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}
],
"version": 4
}
谢谢你的时间。
(我不是母语人士,我的英语很基础,请不要介意)
解决方案
您的问题是您将其编译为 C++ 代码,而不是 C11。
我能够在 Windows 10、GCC v8.1、x64 上使用 mingw64 编译它。
> gcc -std=c11 a.c
工作并生成按预期运行的 .exe
> g++ a.c
产生你所说的编译错误。将其编译为 C11 程序,一切都应该没问题
推荐阅读
- hash - H (x ◦ id) ∈ Y1,其中 id = 100 位值且 Y1 = 1000 位值或其中 id = 1000 位值且 Y2 = 100 位值。更长的时间?
- python - 如何在 Python 3 中的 set 中的特定位置/索引中添加值?
- vhdl - VHDL 如何确保使用尽可能小的加法器?
- algorithm - 找到符合特定标准的长度为 n 的一组膳食的算法
- c - 创建一个设置了 N 个最低有效位的掩码
- python-3.x - 模块“tkinter”没有属性“Treeview”
- openvswitch - ubuntu 18.04 中 dpdk 和 ovs 上的 testpmd 问题
- python - 使用 python flask stripe payment 限制对网页的访问
- c - C program help / If, Else If
- keychain - 从搜索列表中删除钥匙串?