Синтаксическая ошибка комплексного числа в C (с использованием VScode) - PullRequest
2 голосов
/ 11 июня 2019

Я хочу использовать комплексный номер в 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
}

код и ошибки свойства

Спасибо за ваше время.

(я не являюсь носителем языка, мой английский довольно простой, пожалуйста, не возражайте)

1 Ответ

2 голосов
/ 11 июня 2019

Ваша проблема в том, что вы компилируете его как код C ++, а не C11.

Я смог скомпилировать его с помощью mingw64 в Windows 10, GCC v8.1, x64.

> gcc -std=c11 a.c

работает и создает .exe, который работает как ожидалось

> g++ a.c

приводит к ошибкам компиляции, как вы заявили.Скомпилируйте его как программу C11 и все должно быть в порядке

...