Error array size missing in

C Programming for Beginners : Length of an Array Length of an Array It helps us write the if-else statement in just one line ✌️ Traditional if-else Statement Syntax if-else Statement with Ternary Operator Example Let’s just say we want to compare two numbers and print the number which is the greater one. Now, […]

Содержание

  1. C Programming for Beginners : Length of an Array
  2. Traditional if-else Statement Syntax
  3. if-else Statement with Ternary Operator
  4. Example
  5. Sizes
  6. Length of an Array
  7. Как сделать двумерный массив указанного пользователем значения?
  8. Решение
  9. Другие решения
  10. Ошибка размера массива в C
  11. 5 ответов
  12. Error array size missing in
  13. Name already in use
  14. sourcepawn / docs / upgrading-1.11.md
  15. Users who have contributed to this file

C Programming for Beginners : Length of an Array

Length of an Array

It helps us write the if-else statement in just one line ✌️

Traditional if-else Statement Syntax

if-else Statement with Ternary Operator

Example

Let’s just say we want to compare two numbers and print the number which is the greater one.

Now, we could do the same thing within just one line like this :

Or if you wanted to print it rather than returning it, write like this :

This looks so cool 😃

Let’s now implement this into an actual program.

Sizes

Each of the data types consumes a particular set of memory. For example, the int data has a size of 4 bytes of memory.

We can print the size of each of each of the data types by using the sizeof() function.

There is also a specific range of values for each data type.

(This can be vary for different compilers)

Details are listed below in the program in form of comments.

Length of an Array

We know that char type takes 1 byte of memory.

Let’s try a string array.

It gave us an error saying the array size is missing.

Let’s set the size this time.

So we get to choose the size of an array.

Let’s store a string of 3 letters within this array and check whether it prints 3 of 5.

Lets store another string. But this time we won’t specify the size within those brackets.

It gives 4. But it should give 3 right ?
Don’t worry. We can use this feature ✌️

Moral of the story : The size of array depends on the number within those squared brackets or the value stored within it.

So the size is done. Now what about the length ?

The length of the above the above is 4(cuz there are three letters). And the size is 4 too.

For a string array, the length is same as the array size. But can be different for other types of arrays. For example an integer array.

But wait what’s an integer array ?

Like a string array is a set of chars; an int array is a set of integers.
The set is created with curly brackets.

Note : Do not forget to specify the data type of the array as int.

We can see the length of this array is 3 as it has three numbers.

But is the size same ?

No. The size is 12 because each integers holds 4 bytes and there are 3 integers.
So 4 times 3 is 12.

In case of string array, the size was the same the length because the string is a set of chars. And a char takes 1 byte of memory.

So how can we print the length of the integer array ?

Simple! We divide the size of array (12) with the size of first element (4). So we get three.

The size of the first element of the array is 4 cuz it is an integer type.

This is how we can get access to the elements of the array.

Источник

Как сделать двумерный массив указанного пользователем значения?

Как бы я объявил двумерный массив размером n на n, который дает пользователь?
Например, почему это работает:

но это не будет

Возможно ли иметь двумерный массив размера строки и столбца n или вам придется использовать вектор?
Спасибо!

Решение

Сделайте это с вектором, вот так:

Также есть std::valarray шаблон которая аналогична функциональности std::vector , но имеет интересную дополнительную функциональность, которая может быть полезна в случае матрицы.

Другие решения

Чтобы создать многомерный массив, вам нужно написать так:

И не забудьте удалить его:

Но текущая лучшая практика c ++ — никогда не выделять или освобождать память в коде приложения, то есть вы должны использовать std::vector или некоторый другой контейнерный класс.

Этот ответ отличается в двух пунктах от большинства других ответов:

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

Общий подход использует один линейный блок памяти и сохранение элементов строки после строки или столбца после столбца (Строка или порядок столбцов ). Давайте немного обобщим и скажем, что вы хотите получить двумерное количество типа T с экстентами N0 а также N1 , Тогда вы можете получить необходимую память

Использование вектора вместо необработанного указателя имеет несколько преимуществ. Например, вы не можете забыть освободить память, потому что деконструктор заботится об этом автоматически (RAII идиома ). Другое преимущество заключается в том, что указанный выше конструктор заполняет вектор копиями, созданными по умолчанию. T (вместо того, чтобы оставить память неинициализированной).

Далее вы можете получить доступ к линейной памяти с помощью vector «s член operator[] (или функция-член at если вы хотите, связанные чеки). Вы, вероятно, хотите использовать два индекса n0 а также n1 в промежутках [ 0 , N0 ) а также [ 0 , N1 ), но память является линейной и требует одного индекса. Следовательно, вы можете ввести вспомогательную функцию index чтобы получить доступ к вашему 2D количеству, как, скажем,

Чтобы представить, как это может работать, рассмотрим матрицу 3 на 2. В данном линейном блоке памяти вы можете расположить элементы следующим образом:

В таком случае вы бы написали

В общем для d размеры у вас есть (псевдокод)

где выражения в скобках также называются смолы.

Если вы поместите всю эту логику в класс, она станет очень простой в использовании. Вот пример для вдохновения (онлайн демо с N = 4 ):

Можно создать двумерный массив без использования векторов, как показано ниже. Это будет работать для всех типов.

Но проблема заключается в управлении памятью, так как это грубый подход.

Вместо этого мы можем использовать векторы, которые можно

Источник

Ошибка размера массива в C

Я написал программу для выполнения этих задач: сначала получите строку от пользователя и вычислите ее размер с помощью функции sizeof(). Вот мой код:

Ошибка компиляции: error: array size missing in ‘U1 Почему? Пожалуйста, объясните, что здесь не так?

5 ответов

Вам нужно определить размер массива, чтобы сообщить компилятору, сколько места выделить:

Если вы не знаете размер вашего массива во время компиляции, вы можете динамически распределять память с помощью malloc :

Заметка

всегда будет печатать 256, так как sizeof возвращает размер массива, вычитаемый во время компиляции, а не количество символов, просто прочитанных в массиве. Вы можете использовать sizeof(char) * (strlen(U1) + 1) для вычисления количества байтов, требуемых строкой (+1 происходит от символа NUL-терминатора в конце строки).

C массивы фиксированной длины, поэтому каждый массив должен иметь свой размер, полностью определенный при его объявлении. Действительная декларация — это что-то вроде:

Обратите внимание, что если пользователь вводит больше, чем это число символов (минус один для завершающего нуля), поведение этой программы не определено. Чтобы избежать этой проблемы, замените scanf(«%s») на fgets() и узнайте о динамических массивах.

0 sheu [2013-09-17 16:13:00]

Массивы в C должны быть объявлены с размером. Другой вариант — использовать динамические массивы, которые являются указателями

0 Jupotter [2013-09-17 15:46:00]

Вам нужно указать размер массива. Scanf принимает уже выделенный массив и не изменяет его размер, он просто заполняет его вводом.

Ваш код должен выглядеть так:

Обратите внимание, что я не использовал sizeof , потому что у меня был бы весь размер массива, а не только строка. strlen даст вам размер строки с нулевым завершением.

0 王玉林 [2013-09-17 15:47:00]

вы должны сделать определенный массив, обычный компилятор C не поддерживает динамический массив.

Источник

Error array size missing in

Why does the error actually mean in the code:

void mat( int matrix[][]);

But there’s no error for this code:

void mat( int matrix[]);

Whats the technical difference?

int matrix[] is an incomplete type when used as a paramter. Use int* matrix instead.

int matrix[][] is meaningless. Use int** matrix instead.

Please note that the array sizes are not passed, you must pass these seperately.

BTW why is this code correct:

void mat( int matrix[][1]);

To quote the C standard:

An incomplete type may only by used when the size of an object of that type is not needed. It is not
needed, for example, when a typedef name is declared to be a specifier for a structure or union, or
when a pointer to or a function returning a structure or union is being declared. (See incomplete types
in 6.2.5.) The specification has to be complete before such a function is called or defined.

6.2.5.22 goes on to say:

An array type of unknown size is an incomplete type. It is completed, for an identifier of
that type, by specifying the size in a later declaration (with internal or external linkage).

What does that mean?

It means that for:

the size is not needed. It can be treated as an array of int of unspecified size where the size isn’t needed. Incrementing a pointer to the next element of the array means adding sizeof(int) to the pointer.

a 2D array (an array of int[]) is specified, but we don’t know the size of int[]. In this case, the size is needed. We don’t know how to increment the pointer to an int[].

a 2D array (an array of int[1]) is specified. We know how to increment the pointer to the next element, it’s sizeof(int) * 1.

Why all this? The background link I posted earlier talks about the history of the treatment of arrays.

Источник

Name already in use

sourcepawn / docs / upgrading-1.11.md

  • Go to file T
  • Go to line L
  • Copy path
  • Copy permalink

1 contributor

Users who have contributed to this file

Copy raw contents

Copy raw contents

SourcePawn 1.11 contains a major rewrite of the compiler. This rewrite is intended to allow rapid feature development and improve the health and stability of the language. It fixes many bugs, and as a result, old programs may not compile.

Notably, SourcePawn 1.11 does not hide errors in unused functions anymore. If a stock is unused, and has errors, the errors should be fixed or the stock should be removed.

More common errors for 1.11 upgrades are listed below.

The following code is no longer valid:

In previous versions of SourcePawn, the right-hand side of the expression was evaluated after creating the left-hand name. We have changed the ordering to eliminate a source of confusion and possible bugs. Because the right-hand side now evaluates first, the symbol i does not exist.

The fix is to explicitly initialize to zero:

In addition, the following code is no longer valid:

In previous versions, the «const» keyword was not respected. It is now properly implemented.

Return Value Changes

It is now a warning to omit a return statement. That means the following examples are all problematic:

To ease the transition to the new semantic checker, spcomp will emit a warning when the return value is an enum, boolean, or integer. Any other type is an error and compilation will fail.

Functions that return arrays now MUST use transitional syntax. The following will not work:

Instead, it must be:

Two obscure syntax options have been deprecated, and will emit a warning. Using the keyword do before a statement, and omitting parenthesis on control conditionals.

These examples should be changed to the standard syntax, which uses parentheses:

#pragma semicolon 1 now only affects the current file, and does not affect sub-files. This is to enable better compatibility with include files. This also makes language changes less risky for extension developers.

Type checking of arrays has been greatly improved in SourcePawn 1.11. More errors will be caught and more initialization patterns are supported. Below are some common errors that the new compiler finds and some suggestions as to how to fix them.

error 183: brackets after variable name indicates a fixed-size array, but size is missing or not constant

The following code will trigger this error:

When brackets [] follow the variable name, they indicate a fixed size. When they follow the type, they indicate a dynamic or unknown size. The error in this example is that the position indicates a fixed size, but no size was given. There is no way to deduce the size automatically because it’s an argument, and the initializer only applies to default values.

The fix is to use the correct bracket positioning:

error 047: array sizes do not match, or destination array is too small

There are a number of reasons why this error might appear in 1.11 in a script that compiled fine in earlier versions.

String is too big

Earlier versions of SourcePawn incorrectly computed the size of string arrays. For example, char x[3] was internally calculated as four bytes. This has been fixed in 1.11. Plugins relying on this incorrect calculation will no longer compile.

Here are some examples of code that used to work, but don’t anymore:

For international plugins, remember that utf8 strings can occupy more bytes than characters. You can use sizeof() to check the true size of a string.

Multi-dimensional with initializers

The following code will no longer work and will report error 47:

The reason is that the final rank of the array has two different sizes, 4 bytes (for «awp» ) and 16 bytes (for «rocket_launcher» ). Therefore the size of the last dimension is not known at compile-time. There are a few ways to work around this.

First, you can use a hardcoded size:

Second, you can use strcopy :

warning 241: scalar assignment to array is deprecated

This warning will happen when the following pattern is detected:

The error is that 0 is a scalar (a single value) being assigned to an array, which is illegal. The correct syntax is:

For 0 values (or false , or 0.0 , or «» ), an initializer is not needed at all:

Since this pattern is quite common, we special-cased it so that it still works in 1.11 with a warning. In future versions it may become an error.

error 101: fixed dimensions must be after the array name, not on the type

The following code will trigger this error:

The brackets ( [] ) are in the wrong position. Next to the type, they indicate an array of unknown or any size. Next to the name, they indicate a fixed size. The correct syntax is:

error 165: cannot create dynamic arrays in static scope — did you mean to create a fixed-length array with brackets after the variable name?

The following code will trigger this error:

This is similar to error 101 above. The brackets next to the type indicate an array of unknown size. When declaring a local variable in legacy syntax, the 3 indicates a dynamic array. Dynamic arrays aren’t allowed in global or static scope. The correct syntax is:

In earlier versions of SourcePawn, the preprocessor had visibility into things it shouldn’t have, like local variables and enum names. This no longer works:

Instead, consider either removing your dependence on the preprocessor, or by introducing a new macro:

The old behavior only worked in earlier compilers due to an implementation quirk. The preprocessor was sharing symbol tables with the rest of the compiler, meaning it had access to the entire language state. This kind of thing does not work at all in a proper compiler pipeline because the preprocessing stage is textual, not semantic. In fact it is an entirely separate language. So with 1.11, the preprocessor can only see preprocessor state, not language state.

Plugins compiled with SourcePawn 1.11 use a new internal representation for multi-dimensional arrays called «direct arrays». A new method, IPluginRuntime::UsesDirectArrays , has been added to detect this. For extensions that provide natives taking multi-dimensional arrays or invoke public functions with multi-dimensional arrays, it is necessary to check for direct arrays and just memory access appropriately.

Previously, the effective address for a[i][j] was a + i + a[i] + j . When UsesDirectArrays is true, the formula is a[i] + j .

Источник

  • Home
  • Forum
  • General Programming Boards
  • C Programming
  • «Missing array size»

  1. 12-30-2005


    #1

    Ash1981 is offline


    Registered User


    «Missing array size»

    Once again, this seems to be a difference of compilers. I downloaded 2 different ones, because one will allow making DOS programs, and the other is w32 console programs.

    In the win32 one, (DevC++) if I type:

    the compiler tells me «Missing array size», but if I use my MSDOS compiler (Pacific C), it works just fine. Also I’ve seen examples in the book I’m reading to try and learn c and on the web where people define an array with no size in the examples.

    Thanks for any input, you guys are proving to be an invaluable resource, esp. when google fails me.


  2. 12-30-2005


    #2

    quzah is offline


    ATH0

    quzah's Avatar


    You can only have arrays with no size if you:
    a — are filling them at the time you declare them.

    Code:

    char carray[] = "some stuff here";
    int iarray[] = { 1, 2, 33, 44, 567 };

    b — they’re the last member of a structure, and you’re using them for making your structures ugly…er…variable sized kinda sorta.

    Code:

    struct foo
    {
        size_t somestuff;
        char somejunk[];
    };
    
    struct foo *b;
    
    b = malloc( sizeof( *b ) + numofbytestotackontheend );

    Quzah.

    Hope is the first step on the road to disappointment.


  3. 12-30-2005


    #3

    Ash1981 is offline


    Registered User


    Thanks, but what if you don’t know what size you want the array to be when you declare it? Like if a user is going to type in a string, and of course you have no idea how much they will type in many cases…?


  4. 12-30-2005


    #4

    Salem is offline


    and the hat of int overfl

    Salem's Avatar


    > but if I use my MSDOS compiler (Pacific C), it works just fine
    Most old DOS compilers have a very loose idea of C compared to modern ANSI-C compilers.

    > Like if a user is going to type in a string, and of course you have no idea how much they will type in many cases…?
    You never know this, which is why you should always use fgets() in the first instance to read the input in sizes you know.


  5. 12-30-2005


    #5

    cwr is offline


    Registered Luser

    cwr's Avatar


    You either use a fixed length array and limit the input to the size of the array (eg. fgets) or you use a pointer, malloc some memory, read in an amount of input, and if there’s still more to be read, allocate more memory, read more, and so on.

    See ggets by cbfalconer for an example of the latter.

    http://cbfalconer.home.att.net/download/index.htm


  6. 12-30-2005


    #6

    Ash1981 is offline


    Registered User


    I feel like I should be paying you guys for the education, thanks again.

    I know how to program a decent amount in qb, but I got tired of that and wanted to learn something powerful like c, and I definatly am benefitting from all your help.


  7. 12-30-2005


    #7

    Ash1981 is offline


    Registered User


    PS — my bad about saying that I saw examples where they did that, I was mistaken. They were actually doing char a; where it’s just 1 character, not a string.


Popular pages

  • Exactly how to get started with C++ (or C) today
  • C Tutorial
  • C++ Tutorial
  • 5 ways you can learn to program faster
  • The 5 Most Common Problems New Programmers Face
  • How to set up a compiler
  • 8 Common programming Mistakes
  • What is C++11?
  • Creating a game, from start to finish

Recent additions subscribe to a feed

  • How to create a shared library on Linux with GCC — December 30, 2011
  • Enum classes and nullptr in C++11 — November 27, 2011
  • Learn about The Hash Table — November 20, 2011
  • Rvalue References and Move Semantics in C++11 — November 13, 2011
  • C and C++ for Java Programmers — November 5, 2011
  • A Gentle Introduction to C++ IO Streams — October 10, 2011

Similar Threads

  1. Replies: 16

    Last Post: 05-29-2009, 07:25 PM

  2. Replies: 17

    Last Post: 03-24-2009, 10:33 AM

  3. Replies: 2

    Last Post: 06-13-2005, 07:31 AM

  4. Replies: 3

    Last Post: 07-09-2004, 09:54 AM

  5. Replies: 30

    Last Post: 07-01-2004, 07:48 PM

Руководство пользователя по MPLAB® компилятору Си для PIC24 и dsPIC®

Введение

В данном приложении приводится список наиболее общих диагностических

сообщений, выдаваемых компилятором MPLAB Cи для PIC24 и dsPIC® (бывший

MPLAB C30).

.

A

Компилятор может производить два вида диагностических сообщений: ошибки и предупреждения. Каждый вид имеет свои цели.

Ошибки сообщают о проблемах, которые делают невозможной компиляцию

чтобы убедиться, что ваша программаWilsonделает именно то, что вы запланировали; также они могут означать устаревшие возможности или использование

программы. Компилятор сопровождает сообщение именем исходного файла и номером его строки, где обнаружена ошибка.

• Предупреждения сообщают об остальных странных условиях в коде, которые могут означать наличие проблемы, хотя компиляция может продолжаться (и

продолжается). Предупреждение также содержит имя исходного файла и номер его строки, но включает текст warning, чтобы отличать его от ошибки.

Предупреждения могут означать опасные места, которые вы должны проверить,

нестандартных особенностей компилятора. Многие предупреждения выдаются

только если вы это запросите с помощью опций –W (например, опция –Wall

запрашивает целый ассортимент полезных предупреждений).

В редких случаях компиляторby

может выдать сообщение о внутренней ошибке. Это

Translated

означает, что компилятор сам обнаружил неисправность, о которой следует

сообщить в службу поддержки Microchip. Подробности отправки подобного сообщения указаны в соответствующем месте данного руководства.

Ошибки

Символы

x used with no following HEX digits

Escape последовательность x должна быть продолжена шестнадцатеричными цифрами.

‘&’ constraint used with no register class

Неправильный оператор ассемблера.

‘%’ constraint used with last operand

Неправильный оператор ассемблера.

#elif after #else

В условных директивах препроцессора #else должна появляться только после

#elif.

#elif without #if

В условных директивах препроцессора перед #elif должна быть #if.

#else after #else

В условных директивах препроцессора #else может быть использована только раз.

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. C-1

16-битовый компилятор Си. Руководство

#else without #if

В условных директивах препроцессора перед #else должна быть использована

#if.

#endif without #if

В условных директивах препроцессора перед #endif должна быть #if.

#error ‘message

Это сообщение появляется в ответ на директиву #error.

#if with no expression

.

Отсутствует константное выражение.

#include expects «FILENAME» or <FILENAME>

Имя файла в директиве #include пропущено или не завершено. Оно должно быть

заключено в кавычки или угловые скобки.

A

Wilson

‘#’ is not followed by a macro parameter

За оператором ‘#’ должно следовать имя аргумента макро.

#keyword ‘ expects «FILENAME» or <FILENAME>

Указанная директива требует наличия имени файла в кавычках или угловых скобках в качестве аргумента.

‘##’ cannot appear at either end of a macro expansion

Оператор конкатенации ‘##’ не может появляться в начале и в конце макрорасширения.

a parameter list with an ellipsis can’t match an empty parameter name list declaration

Объявление и определение функции должны соответствовать друг другу.

«symbolTranslated» after #line is not a positive integer

#line предполагает положительный целый номер исходной строки. aggregate value us d where a complex was expected

Не используйте объединения вместо комплексных величин. aggregate v lue used where a float was expected

Не используйте объединения вместо величин с плавающей точкой. aggregate value used where an integer was expected

Не используйте объединения вместо целых величин. alias arg ot string

Аргументом атрибута alias должна быть строка, определяющая имя, для которого текущий идентификатор является псевдонимом.

alignment may not be specified for ‘identifier

Атрибут выравнивания может использоваться только с переменной.

‘__alignof’ applied to a bit-field

Оператор ‘__alignof’ не может применяться к битовым полям.

alternate interrupt vector is not a constant

Номер вектора прерывания должен быть целой константой.

alternate interrupt vector number n is not valid

Указан недопустимый номер вектора прерывания.

DS51284H(ru) стр. C-2

© 2008 Microchip Technology Inc.

argument to ‘-specs’ is missing

Пропущено имя библиотеки.

argument to ‘-l’ is missing

Пропущено имя каталога.

argument to ‘-B’ is missing

argument of ‘asm’ is not a constant string

argument ‘identifier ‘ doesn’t match prototype

Приложение C Диагностика

ambiguous abbreviation argument

Задано неоднозначно трактуемое сокращение командной строки.

an argument type that has a default promotion can’t match an empty parameter name list declaration.

Объявление и определение функции должны соответствовать друг другу.

args to be formatted is not …

Первый по порядку проверяемый аргумент атрибута форматирования определяет параметр, который не объявлен ‘…’.

Тип указанного аргумента функции должен соответствовать. ее прототипу.

Аргумент ‘asm’ должен быть константной строкой.A Пропущено имя файла в опции –specsWilson. argument to ‘-specs=’ is missing

Пропущено имя файла в опции –specs. argument to ‘-x’ is missingby

Пропущено название языка. argument to ‘-Xlinker’ is missing

Пропущен аргумент для передачи компоновщику. arithmeticTranslatedon pointer to an incomplete type

Арифметические операции с указателями на незавершенные типы не разрешаются. array index in non-array initializer

Не используйте индексы массивов при инициализации отличных от массивов переменных.

array size missing in ‘identifier

Пропущен размер указанного массива. array subscript is not an integer

Индексы массива должны быть целыми.

‘asm’ operand constraint incompatible with operand size

Неправильный оператор ассемблера.

‘asm’ operand requires impossible reload

Неправильный оператор ассемблера.

asm template is not a string constant

Шаблон ассемблера должен быть строковой константой.

assertion without predicate

За #assert или #unassert должен следовать предикат из единственного идентификатора.

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. C-3

16-битовый компилятор Си. Руководство

attribute‘ attribute applies only to functions

Указанный атрибут применим только к функциям.

B

bit-field ‘identifier ‘ has invalid type

Указанное битовое поле должно быть интегрального типа или типа перечисления.

bit-field ‘identifier ‘ width not an integer constant

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

both long and short specified for ‘identifier

Указанная переменная не может быть одновременно. типов long и short. both signed and unsigned specified for ‘identifierA

Указанная переменная не может быть одновременно знаковой и беззнаковой. braced-group within expression allowed only inside a function

Недопустимо использование заключеннойWilson фигурными скобками группы внутри выражения за пределами функции.

break statement not within loop or switch

Оператор break должен использоваться только внутри операторов выбора или цикла.

__builtin_longjmp second argument must be 1

Второй аргумент __builtin_longjmp должен быть 1.

C

called object is not a functionby

Только функцию можно вызывать в Си. cannot convert to a pointer type

Выражение не может быть приведено к типу указателя. cannotTranslatedput object with volatile field into register

Недопустимо помещать объект с volatile полем в регистр. cannot reload in eger constant operand in ‘asm’

Неправильный оператор ассемблера. cannot specify both near and far attributes

Атрибуты near и far взаимно исключающие, только один из них может использоваться для функции или переменной.

cannot take address of bit-field ‘identifier

Попытка получить адрес указанного битового поля некорректна. can’t open ‘file‘ for writing

Система не может открыть указанный файл. Возможными причинами может быть отсутствие места, отсутствие каталога или прав записи в данный каталог.

can’t set ‘attribute‘ attribute after definition

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

case label does not reduce to an integer constant

Метка при case должна быть целой константой периода компиляции.

case label not within a switch statement

Метка при case должна быть внутри оператора выбора.

cast specifies array type

Недопустимо использовать тип массива для приведения типов.

DS51284H(ru) стр. C-4

© 2008 Microchip Technology Inc.

Приложение C Диагностика

cast specifies function type

Недопустимо использовать тип функции для приведения типов.

cast to union type from type not present in union

Приведение к типу союза допустимо только из типа, представленного в союзе.

char-array initialized from wide string

Символьный массив можно инициализировать только обычной строкой, но не widestring.

file: compiler compiler not installed on this system

complex invalid for ‘identifier

.

Квалификатор complex может применяться толькоA

к интегральным типам или типам

с плавающей точкой.

conflicting types for ‘identifier

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

continue statement not within loop

Несколько

несовместимых

объявлений

обнаружено

для

указанного

идентификатора.

Wilson

Оператор continue может использоваться только внутри цикла. conversion to non-scalar type requested

Преобразование типов допустимо только для скалярных, а не составных типов.

D

data type of ‘name‘ isn’t suitableby for a register

Указанный тип данных не соответствует запрошенному регистру.

declaration for parameter ‘identifier ‘ but no such parameter

Массив функций недопустим.

В спискеTranslatedпараметров можно объявлять только параметры. declaration of ‘identifier ‘ as array of functions

declaration of ‘iden ifier ‘ as array of voids void массив недопустим.

identifier ‘ dec ared as function returning a function

Функция не может возвращать функцию.

identifier ‘ declared as function returning an array

Функция не может возвращать массив. decrement of pointer to unknown structure

Нельзя декрементировать указатель на неизвестную структуру.

‘default’ label not within a switch statement

Вариант default должен быть внутри оператора switch.

symbol ‘ defined both normally and as an alias

Символ не может использоваться в качестве псевдонима, если он уже определен.

‘defined ‘ cannot be used as a macro name

Имя defined нельзя использовать для макроса.

dereferencing pointer to incomplete type

Разыменованный указатель должен быть указателем на незавершенный тип.

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. C-5

empty character constant

duplicate (or overlapping) case value

Структура не может иметь одинаковых членов.

duplicate member ‘identifier

16-битовый компилятор Си. Руководство

division by zero in #if

Деление на ноль.

duplicate case value

Варианты в операторе выбора должны быть уникальны.

duplicate label ‘identifier

Указанная метка в пределах видимости должна быть уникальна.

duplicate macro parameter ‘symbol

Указанный символ использован в списке параметров более одного раза.

A . Диапазоны выбора не должны дублироваться или перекрываться. Сообщение об ошибке ‘this is the first entry overlappingWilsonthat value‘ будет обозначать место первого

вхождения дубликата или перекрытия. Диапазоны выбора являются расширением стандарта ANSI для компилятора.

E

elements of array ‘identifier ‘ have incomplete type

Элементы массива должны быть завершенных типов.

Пустая текстовая константа запрещена. empty file name in ‘#keywordby

В аргументе указанной директивы используется пустое имя файла. empty index range in initializer

Скалярный инициализатор не может быть пустым. enumerator value for ‘identifier ‘ not integer constant

Нельзя использовать пустые диапазоны индексов в инициализаторах. emptyTranslatedscalar initializer

Значения перечисления должны быть целыми константами. error closing ‘file

Система не может закрыть указанный файл. Возможная причина — нехватка места или слишком большой размер файла

error writing to ‘file

Система не может записать указанный файл. Возможная причина — нехватка места или слишком большой размер файла

excess elements in char array initializer

В списке инициализации больше элементов, чем требуется для символьного массива.

excess elements in struct initializer

Не используйте лишние элементы в инициализаторе структуры.

expression statement has incomplete type

Выражение имеет незавершенный тип.

extra brace group at end of initializer

Не следует помещать лишние группы фигурных скобок в конце инициализатора.

extraneous argument to ‘option‘ option

Слишком много аргументов в указанной опции командной строки.

DS51284H(ru) стр. C-6

© 2008 Microchip Technology Inc.

flexible array member in union

Приложение C Диагностика

F

identifier ‘ fails to be a typedef or built in type

Данные могут иметь только встроенный тип или тип, определенный typedef.

field ‘identifier ‘ declared as a function

Указанное поле не должно быть определено как функция.

field ‘identifier ‘ has incomplete type

Указанное поле должно быть завершенного типа.

first argument to __builtin_choose_expr not a constant

.

Первый аргумент должен быть константным выражением, определенным на этапе

компиляции.

A

flexible array member in otherwise empty struct

Незавершенный тип массива может быть последним элементом структуры, состоящей из более чем одного именованногоWilson члена.

Незавершенный тип массива нельзя использовать в союзе. flexible array member not at end of truct

Незавершенный тип массива может быть только последним элементом структуры.

‘for’ loop initial declaration used outside C99 mode

Объявление инициализации цикла for недопустимо за пределами режима C99. format string arg follows the args to be formatted

Аргументы в атрибуте форматаby являются несовместимыми. Индекс аргумента строки форматирования должен быть меньше, чем индекс первого проверяемого аргумента. ((прим.перев.) см. п. 2.3.2. «Определение атрибутов функций», атрибут format (archetype, string-index, first-to-check))

formatTranslatedstring arg not a string type

Аргумент индекса строки форматирования в атрибуте format определяет параметр, который не имеет строкового типа.

format string has invalid operand number

Аргумент, задающий номер операнда в атрибуте format должен быть константой этапа компиляции.

function definition declared ‘register ‘

Определения функций не могут быть объявлены register. function definition declared ‘typedef’

Определения функций не могут быть объявлены typedef. function does not return string type

fo mat arg является единственным атрибутом, который используется с функцией, возвращающей строку.

function ‘identifier ‘ is initialized like a variable

Недопустимо инициализировать указанную функцию как переменную.

function return type cannot be function

Функция не может возвращать функцию.

G

global register variable follows a function definition

Определение глобальных переменных должно предшествовать определению функций.

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. C-7

16-битовый компилятор Си. Руководство

global register variable has initial value

Нельзя определять начальное значение для глобальной регистровой переменной.

global register variable ‘identifier ‘ used in nested function

Нельзя использовать указанную глобальную переменную во вложенной функции.

H

identifier ‘ has an incomplete type

Недопустимо, чтобы указанный идентификатор имел незавершенный тип.

identifier ‘ has both ‘extern’ and initializer

Нельзя инициализировать переменную, объявленную. как extern. hexadecimal floating constants require an exponentA

Шестнадцатеричная константа с плавающей точкой должна иметь показатель.

I

implicit declaration of function ‘identifier

Указанная функция используется без предшествующего объявления прототипа или определения.

impossible register constraint in ‘asm’

Неправильный оператор ассемблера.

incompatible type for argument of ‘ dentifier

При вызове функций в Си следует проверять соответствие типов фактических

параметров формальным.

Wilson

by

incompatible type for argument n of indirect function call

При вызове функций в Си следует проверять соответствие типов фактических параметров формальным.

incompatible types in operation

Указанная опция командной строки незавершена. inconsistent operand constraints in an ‘asm’

Типы,Translatedиспользуемые в указанной операции должны быть совместимы. incomplete ‘name‘ option

Неправильный оператор ассемблера. increment of pointer to unknown structure

Нельзя инкрементировать указатель на неизвестную структуру. initializer element is not computable at load time

Элементы инициализации должны быть вычислимы на этапе загрузки. initi lizer element is not constant

Элементы инициализации должны быть константами. initializer fails to determine size of ‘identifier

Инициализатор массива не может определить его размер.

initializer for static variable is not constant

Инициализатор статической переменной должен быть константой.

initializer for static variable uses complicated arithmetic

Инициализатор статической переменной не должен использовать сложную арифметику.

input operand constraint contains ‘constraint

Указанное ограничение недопустимо для входного операнда.

DS51284H(ru) стр. C-8

© 2008 Microchip Technology Inc.

Приложение C Диагностика

int-array initialized from non-wide string

Массив целых не может быть инициализирован из обычной строки (non-wide string).

interrupt functions must not take parameters

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

interrupt functions must return void

Функция обслуживания прерывания должна возвращать значение типа void. Никакие другие типы не разрешены.

interrupt modifier ‘name‘ unknown

Компилятор принимает только irq,

altirq или save в качестве модификаторов

атрибута interrupt.

.

interrupt modifier syntax error

A

Wilson

Синтаксическая ошибка в модификаторе атрибута interrupt. interrupt pragma must have file scope

#pragma interrupt должна иметь область действия в пределах файла. interrupt save modifier syntax error

Синтаксическая ошибка в модификаторе save атрибута interrupt. interrupt vector is not a constant

Номер вектора прерывания должен быть целой константой. interrupt vector number n is not valid

Нужно указать разрешенныйby номер вектора прерывания.

invalid #ident directive

За директивой #ident должна следовать строковая константа в кавычках.

invalid arg to ‘__builtin_frame_address’

текущую, и т.д.) и целой константой. invalid arg to ‘ builtin_return_address’

АргументTranslatedдолжен быть уровнем вызывающей функции (где 0 возвращает адрес фрейма текущей функции, 1 возвращает адрес фрейма функции, вызвавшей

Аргумент уровня должен быть целой константой. invalid argument for ‘name

Компилятор предполагает использование data или prog в качестве атрибута пространства параметров.

invalid character ‘character‘ in #if

Сообщение появляется, если в директиве #if встречаются непечатные символы, например символы управления.

invalid initial value for member ‘name

Указанное битовое поле может быть инициализировано только целым. invalid initializer

Не следует использовать неправильные инициализаторы.

Invalid location qualifier: ‘symbol

Возможно ‘sfr‘ или ‘gpr‘, которые игнорируются в устройствах dsPIC как квалификаторы размещения.

invalid operands to binary ‘operator

Недопустимые операнды для указанного бинарного оператора.

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. C-9

16-битовый компилятор Си. Руководство

Invalid option ‘option

Указана недопустимая опция командной строки.

Invalid option ‘symbol ‘ to interrupt pragma

В прагме interrupt допустимы опции shadow и/или save.

Invalid option to interrupt pragma

«Мусор» в конце прагмы.

Invalid or missing function name from interrupt pragma

Прагма прерывания требует имени функции, которая будет вызываться.

Invalid or missing section name

Имя секции должно начинаться с буквы или

символа подчеркивания (‘_’) с

.

последующими буквами, цифрами или символами подчеркивания. Имена ‘access‘,

shared‘ и ‘overlay‘ имеют специальное значение.A

invalid preprocessing directive #’directive

Недопустимая директива препроцессора. Надо проверить написание. invalid preprologue argument

Аргумент preprologue может быть оператором или операторами ассемблера, со своими аргументами, заключенными в двойные кавычки.

invalid register name for ‘name

Указанная регистровая переменная с файловой областью действия имеет

запрещенное имя регистра.

Wilson

invalid register name ‘name‘ for register variable

Указанное имя не является именем регистра.

invalid save variable in interrupt pragma

В качестве аргумента savebyтребуется символ или список символов.

invalid storage class for function ‘identifier

ФункцияTranslatedне может иметь регистровый класс памяти. invalid suffix ‘suffix‘ on integer constant

Целая константа может иметь только суффиксы ‘u’, ‘U’, ‘l’ и ‘L’. invalid suffix on floating constant

Константа с плавающей точкой может иметь только суффиксы ‘f’, ‘F’, ‘l’ or ‘L’. Если это две буквы ‘L’, они должны быть вместе и в одном регистре.

invalid type argument of ‘operator

Недопустимый тип аргумента для указанного оператора. inv lid type modifier within pointer declarator

В объявлении указателя допустимы только модификаторы const или volatile. invalid use of array with unspecified bounds

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

invalid use of incomplete typedef ‘typedef

Указанный тип, заданный с помощью typedef, используется неправильно, это запрещено.

invalid use of undefined type ‘type identifier

Указанный тип, заданный с помощью type, используется неправильно, это запрещено.

DS51284H(ru) стр. C-10

© 2008 Microchip Technology Inc.

language ‘name‘ not recognized

Приложение C Диагностика

invalid use of void expression

Выражение void не должно использоваться.

«name» is not a valid filename

#line требует допустимого имени файла.

filename‘ is too large

Указанный файл слишком велик для обработки. Возможно, он больше 4 Гб и препроцессор отказывается обрабатывать такой большой файл. Необходимо, чтобы размер файла был меньше 4Гб.

ISO C forbids data definition with no type or storage class

Для определения данных в стандарте ISO

Cи требуется указать тип или

спецификатор класса памяти.

A

.

ISO C requires a named argument before ‘…’

Wilson

ISO Си требует именованного аргумента перед ‘…’.

L

label label referenced outside of any functi n

Ссылка на указанную метку допустима только внутри функции. label ‘label‘ used but not defined

Указанная метка используется, но не определена.

Допустимые языки включают Си и ассемблер.

filename: linker input file unusedby because linking not done

Указанный файл был задан в командной строке и был принят как входной файл для компоновщика (т.к. не был опознан, как что-то другое). Однако, компоновка не производилась, поэтому данный файл просто проигнорирован.

longTranslatedlong long is too long for GCC

Компилятор поддерживает целые не длиннее, чем long long.

long or short sp cifi d with char for ‘identifier

Квалификаторы long и short не могут использоваться с типом char. long or short specified with floating type for ‘identifier

Квалификаторы long и short не могут использоваться с типом float. long, short, signed or unsigned invalid for ‘identifier

Квалификаторы long, short, signed и unsigned могут использоваться только с интегральными типами.

M

mac o names must be identifiers

Имена макросов должны начинаться с буквы или символа подчеркивания, за которыми следуют остальные буквы, цифры или символы подчеркивания.

macro parameters must be comma-separated

Между параметрами в списке параметров должны быть запятые.

macro ‘name‘ passed n arguments, but takes just n

Слишком много аргументов было передано указанному макросу.

macro ‘name‘ requires n arguments, but only n given

Слишком мало аргументов было передано указанному макросу.

matching constraint not valid in output operand

Неправильный оператор ассемблера.

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. C-11

missing ‘)’ to complete answer

16-битовый компилятор Си. Руководство

symbol ‘ may not appear in macro parameter list

Указанный символ недопустим в качестве параметра.

Missing ‘=’ for ‘save’ in interrupt pragma

Параметр save требует знака равенства перед списком сохраняемых переменных, например: #pragma interrupt isr0 save=var1,var2

missing ‘(‘after predicate

#assert или #unassert предполагает наличие скобок вокруг ответа, например:

#assert PREDICATE (ANSWER)

missing ‘(‘ in expression

Несоответствие скобок, ожидается открывающаяся скобка.

missing ‘)’ after «defined»

.

A

Ожидается закрывающаяся скобка.

missing ‘)’ in expression

Несоответствие скобок, ожидаетсяWilsonзакрывающаяся скобка. missing ‘)’ in macro parameter list

Ожидаются параметры макроса, заключенные в скобки и разделенные запятыми.

#assert или #unassert предполагает наличие скобок вокруг ответа. missing argument to ‘option‘ option

Указанная опция командной строки требует аргумента. missing binary operator beforeby token ‘token

Перед указанной лексемой ожидается бинарный оператор. missing terminating ‘character ‘ character

missing terminating > character

Пропущен указанный терминальный символ, такой как: одинарная кавычка (‘), двойнаяTranslatedкавычка (“) или угловая скобка (>).

Ожидается терминальный символ (>) в директиве #include.

more than operands in ‘asm’

Неправильный оператор ассемблера. multiple defau t labels in one switch

В каждом операторе выбора допустим только один вариант default. multiple parameters named ‘identifier

Имя параметра должно быть уникально.

multiple storage classes in declaration of ‘identifier

Каждое объявление может содержать один класс памяти.

N

negative width in bit-field ‘identifier

Размер битового поля не может быть отрицательным числом.

nested function ‘name‘ declared ‘extern’

Вложенная функция не может быть extern.

nested redefinition of ‘identifier

Вложенное переопределение запрещено.

DS51284H(ru) стр. C-12

© 2008 Microchip Technology Inc.

Приложение C Диагностика

no data type for mode ‘mode

Указанный аргумент режима, определенный для атрибута mode, распознается как режим устройства GCC, но не поддерживается реализацией данного компилятора.

no include path in which to find ‘name

Указанный для включений файл не найден.

no macro name given in #’directive‘ directive

За директивами #define, #undef, #ifdef или #ifndef должно следовать имя макроса.

nonconstant array index in initializer

.

В инициализаторе можно использовать только индексы постоянного массива.

non-prototype definition here

Если прототип функции следует за определениемA

без прототипа, а по количеству

Wilson

аргументов между ними нет соответствия, это сообщение указывает номер строки определения без прототипа.

number of arguments doesn’t match pr t type

Количество аргументов функции должно соответствовать ее прототипу.

O

operand constraint contains incorrectly positioned ‘+’ or ‘=’.

Неправильный оператор ассемблера

operand constraints for ‘asm’ differ in number of alternatives

Неправильный оператор ассемблера operator «defined» requiresbyan identifier

defined подразумевает наличие идентификатора.

operator ‘symbol ‘ has no right operand

Неправильный оператор ассемблера output operand constraint lacks ‘=’

УказанныйTranslatedоператор препроцессора требует правого операнда. output number not directly addressable

Неправильный оператор ассемблера output operand is constant in ‘asm’

Неправильный оператор ассемблера overflow in enumeration values

Значения в перечислении должны быть в диапазоне int.

P

pa ameter ‘identifier ‘ declared void

Указанный параметр не может быть объявлен как void. parameter ‘identifier ‘ has incomplete type

Указанный параметр должен быть завершенного типа. parameter ‘identifier ‘ has just a forward declaration

Указанный параметр должен быть завершенного типа. Использованная ранее декларация не подходит.

parameter ‘identifier ‘ is initialized

Инициализация параметров запрещена.

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. C-13

16-битовый компилятор Си. Руководство

parameter name missing

Макрос предполагает имена параметров. Проверьте две запятые без имени между ними.

parameter name missing from parameter list

Имя параметра должно содержаться в списке параметров.

parameter name omitted

Имя параметра не может быть опущено.

param types given both in param list and separately

parse error

.

Строка исходного текста не может быть разобрана,A

она содержит ошибки.

pointer value used where a complex value was expected

Wilson

Тип параметра может быть задан в списке параметров или отдельно, но не обеими способам одновременно.

Не используйте значения указателей там, где подразумевается наличие комплексных значений.

pointer value used where a floating point value was expected

Не используйте значения указателей там, где подразумевается наличие значений с плавающей точкой.

pointers are not permitted as case values

Значения вариантов в операторе выбора должны быть целыми константами или константными выражениями.

predicate must be an identifierby

#assert или #unassert требуют в качестве предиката один идентификатор.

predicate’s answer is empty

previous declaration of ‘identifier

В #assertTranslatedили #unassert есть предикат и скобки, но в скобках нет ответа, который необходим.

Данное сообщение указывает положение предыдущего объявления данного идентификатора, которое конфликтует с текущим объявлением.

identifier previously declared here

Данное сообщение обозначает положение предыдущего объявления указанного идентификатора, которое конфликтует с текущим объявлением.

identifier previously defined here

Данное сообщение обозначает положение предыдущего определения указанного идентификатора, которое конфликтует с текущим определением.

p ototype declaration

Определяет номер строки, где был определен прототип функции. Используется вместе с другими сообщениями об ошибках.

R

redeclaration of ‘identifier

Указанный идентификатор объявлен многократно.

redeclaration of ‘enum identifier

Перечисление не может быть объявлено повторно.

identifier ‘ redeclared as different kind of symbol

Многократные, несовместимые определения существующего идентификатора.

DS51284H(ru) стр. C-14

© 2008 Microchip Technology Inc.

Приложение C Диагностика

redefinition of ‘identifier

Указанный идентификатор определен многократно. redefinition of ‘struct identifier

Структура не может быть переопределена. redefinition of ‘union identifier

Союз не может быть переопределен.

register name given for non-register variable ‘name

Попытка отобразить регистром переменную, которая не была объявлена как

регистровая.

.

register name not specified for ‘name

Переменная с файловой областью действия объявлена регистровой без

соответствия какому-либо регистру.

A

Wilson

register specified for ‘name‘ isn’t suitable for data type

Выравнивание или другие ограничения препятствуют использованию регистра для указанной переменной.

request for member ‘identifier ‘ in something not a structure or union

Только структуры и союзы имею членов. Недопустимо ссылаться на члены чего-то еще, поскольку ничто больше членов не имеет.

requested alignment is not a constant

Аргументом атрибута выравнивания может быть только константа периода

компиляции.

by

requested alignment is not a power of 2

Аргументом атрибута выравнивания может быть только степень двойки.

requested alignment is too large

return type is incomplete type

ЗапрашиваемоеTranslatedвыравнивание больше, чем позволяет компоновщик. Размер может быть степенью двойки и величиной 4096 или меньше.

Тип возвращаемого значения должен быть завершенный.

S

save variable ‘name‘ index not constant

Размер указанного массива не целая константа. save variable ‘name‘ is not word aligned

Указанный сохраняемый объект должен иметь выравнивание по словам. save v ri ble ‘name‘ size is not even

Указанный сохраняемый объект должен иметь четный размер. save variable ‘name‘ size is not known

Указанный сохраняемый объект должен иметь известный размер. section attribute cannot be specified for local variables

Локальная переменная всегда располагается в регистрах или в стеке, поэтому недопустимо помещать ее в именованную секцию.

section attribute not allowed for identifier

Атрибут секции может быть использован только с функциями или переменными.

section of identifier conflicts with previous declaration

Если один и тот же идентификатор объявляется многократно с использованием атрибута секции, то значения атрибута должны быть совместимы.

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. C-15

16-битовый компилятор Си. Руководство

sfr address ‘address‘ is not valid

Адрес разрешенных SFR должен быть меньше 0x2000.

sfr address is not a constant

Адрес SFR должен быть константой.

‘size of’ applied to a bit-field

sizeof нельзя применять к битовым полям.

size of array ‘identifier ‘ has non-integer type

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

size of array ‘identifier ‘ is negative

.

A

Спецификатор размера указанного массива не должен быть отрицательным. size of array ‘identifier ‘ is too large

Описанный массив слишком велик.

size of variable ‘variable‘ is too largeWilson

Максимальный размер переменной 32768 байтов. storage class specified for parameter ‘identifier

Класс памяти не может быть определен для указанного параметра. storage size of ‘identifier ‘ isn’t constant

Размер памяти под указанный идентификатор должен быть константой периода компиляции.

storage size of ‘identifier ‘ isn’t known

Размер указанного идентификатораby определен не полностью. stray ‘character ‘ in program

Не следует помещать указанный паразитный символ в текст программы.

strftimeTranslatedformats cannot format arguments

При использовании атрибута format, когда параметр archetype это strftime, третий параметр атрибута, указывающий на номер первого аргумента сверяемого со строкой форматирования, должен быть равен 0. Функции стиля strftime не имеют входных значений сверяемых со строкой форматирования.

structure has no member named ‘identifier

Ссылка на указанный несуществующий член структуры. Это запрещено. subscripted value is neither array nor pointer

Только массивы и указатели могут индексироваться. switch quantity not integer

Значение в операторе выбора должно быть целым symbol ‘symbol ‘ not defined

Указанный символ должен быть объявлен перед тем, как его можно использовать в прагме.

syntax error

В указанной строке присутствует синтаксическая ошибка.

syntax error ‘:’ without preceding ‘?’

Символу ‘:‘ должен предшествовать символ ‘?‘ в условном операторе ‘?:‘.

DS51284H(ru) стр. C-16

© 2008 Microchip Technology Inc.

Приложение C Диагностика

T

the only valid combination is ‘long double’

Квалификатор long единственный, который может быть использован с типом double.

this built-in requires a frame pointer

Функция __builtin_return_address требует указатель фрейма. Не следует использовать опцию -fomit-frame-pointer.

this is a previous declaration

too few arguments to function

.

При вызове функции в Си не следует определятьA

аргументов меньше, чем нужно

функции, но больше, тоже нельзя.

too few arguments to function ‘identifier

Если метка дублируется, данное сообщение помогает определить номер строки, где было предыдущее объявление.

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

too many alternatives in ‘asm’

Неправильный оператор ассемблера. too many arguments to function

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

too many arguments to functionby identifier

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

too many decimal points in number

ДолжнаTranslatedбыть только одна десятичная точка в числе. top-level declaration of ‘identifier ‘ specifies ‘auto’

Переменные au o могут быть объявлены только внутри функций. two or more data types in declaration of ‘identifier

Каждый идентификатор может быть только одного типа. two types specified in one empty declaration

Должно быть задано не более одного типа. type of formal parameter n is incomplete

Задайте завершенный тип для указанного параметра. type mismatch in conditional expression

Типы в условных выражениях должны соответствовать. typedef ‘identifier ‘ is initialized

Недопустима инициализация в typedef. Вместо этого используйте __typeof__.

U

identifier ‘ undeclared (first use in this function)

Указанный идентификатор должен быть объявлен.

identifier ‘ undeclared here (not in a function)

Указанный идентификатор должен быть объявлен.

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. C-17

16-битовый компилятор Си. Руководство

union has no member named ‘identifier

Обнаружена ссылка на указанный член союза, но данный союз не имеет такого члена. Это запрещено.

unknown field ‘identifier ‘ specified in initializer

Не следует использовать неизвестные поля в инициализаторах.

unknown machine mode ‘mode

Аргумент режима, заданный для атрибута mode не опознан как разрешенный.

unknown register name ‘name‘ in ‘asm’

.

Неправильный оператор ассемблера.

A

unrecognized format specifier

Неправильный аргумент атрибута форматирования.

unrecognized option ‘-option

Неизвестная опция командной строки.

unrecognized option ‘option

Указанная опция командной строки неизвестна.

identifier ‘ used prior to declarationWilson

Указанный идентификатор используется до своего объявления. unterminated #’name

Предполагается наличие #endif в конце условий #if, #ifdef или #ifndef. unterminated argument list invoking macro ‘name

При просмотре макроса конец файла обнаружен ранее, чем конец макрорасширения.

‘va start’ used in function with fixed args

unterminated comment

by

Конец файла обнаружен ранее, чем конец комментария.

V

Translated

va start должна использоваться только в функциях с переменным списком аргументов.

variable ‘identifier ‘ has initializer but incomplete type

Запрещено инициализировать переменные незавершенных типов. variable or field ‘identifier ‘ declared void

Ни указанная переменная, ни поле не могут быть объявлены void. variable-sized object may not be initialized

Запрещено инициализировать объект переменного размера. vi tual memory exhausted

Недостаточно памяти для вывода сообщений об ошибках. void expression between ‘(‘ and ‘)’

Ожидалось константное выражение, а найдено пустое выражение в скобках.

‘void’ in parameter list must be the entire list

Если void появился в списке параметров, других параметров быть не должно.

void value not ignored as it ought to be

Значение пустой функции нельзя использовать в выражении.

DS51284H(ru) стр. C-18

© 2008 Microchip Technology Inc.

Приложение C Диагностика

W

warning: -pipe ignored because -save-temps specified

Опция -pipe не может быть использована совместно с опцией -save-temps.

warning: -pipe ignored because -time specified

Опция -pipe не может быть использована совместно с опцией -time.

warning: ‘-x spec’ after last input file has no effect

Опция командной строки -x воздействует только на файлы, указанные в командной

строке после нее, если таких не будет, опция не действует.

weak declaration of ‘name‘ must be public

Указанный «слабый» символ должен иметь глобальную видимость.

.

weak declaration of ‘name‘ must precede definition

A

Указанный идентификатор сначала определен, а потом объявлен как weak.

wrong number of arguments specified for attribute attribute

Слишком мало или слишком много аргументов задано для указанного атрибута.

wrong type argument to bit-complement

Не используйте аргументы неправильного типа в этом операторе.

wrong type argument to decrement

Не используйте аргументы неправильного типа в этом операторе.

wrong type argument to increment

Не используйте аргументы неправильногоWilsonтипа в этом операторе.

wrong type argument to unary exclamation mark

Не используйте аргументы неправильного типа в этом операторе.

wrong type argument to unary minus

by

Не используйте аргументы неправильного типа в этом операторе.

wrong type argument to unary plus

Не используйте аргументы неправильного типа в этом операторе.

Z

zero width for bit-field ‘identifier

Указанное битовое поле не может быть нулевого размера.

C.3.

Предупреждения

Символы

‘/*’ within comment

Признак начала комментария обнаружен внутри комментария.

Translated

‘$’ character(s) in identifier or number

Символ доллара в названии идентификатора является расширением стандарта.

#’directive’ is a GCC extension

Директивы #warning, #include_next, #ident, #import, #assert и #unassert

являются расширением GCC и отсутствуют в ISO C89.

#import is obsolete, use an #ifndef wrapper in the header file

Директива #import вышла из употребления. Она использовалась для включения файла, если он еще не был включен. Используйте вместо нее директиву #ifndef.

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. C-19

16-битовый компилятор Си. Руководство

#include_next in primary source file

#include_next начинает поиск списка каталогов заголовочных файл после каталога, в котором был найден текущий файл. В этом случае не было предыдущих заголовочных файлов, поэтому поиск начинается с основного исходного файла.

#pragma pack (pop) encountered without matching #pragma pack (push, <n>)

pack(pop) прагма должна быть парной с pack(push) прагмой, которая должна предшествовать ей во входном файле.

#pragma pack (pop, identifier) encountered without matching #pragma pack (push,

identifier, <n>)

.

pack(pop) прагма должна быть парной с pack(push) прагмой, которая должна

предшествовать ей во входном файле.

A

#warning: message

Директива заставляет препроцессор выдать предупреждение и

продолжать обработку. Лексема, следующая за директивой #warning используется в качестве выдаваемого сообщения.

A

absolute address specification ignored

Спецификации абсолютного адреса для секции кода в операторе #pragma игнорируются, поскольку не поддерживаются компилятором. Адрес должен быть задан в сценарии компоновки, а секции кода могут быть определены с помощью ключевого слова __attribute__.

#warning Wilson

address of register variable ‘name‘ requested

Задание регистра не допускаетby получения адреса переменной. alignment must be a small power of two, not n

Параметр выравнивания прагмы упаковки должен быть небольшой степенью

двойки.Translated

anonymous enum eclared inside parameter list

Анонимное перечисление объявляется в списке параметров функции. Как правило, лучшей практикой программирования является объявление перечислений вне списка параметров, поскольку они никогда не смогут стать завершенными типами, будучи определены в списках параметров.

anonymous struct declared inside parameter list

Анонимная структура объявляется в списке параметров функции. Как правило, лучшей практикой программирования является объявление структур вне списка параметров, поскольку они никогда не смогут стать завершенными типами, будучи определены в списках параметров.

anonymous union declared inside parameter list

Анонимный союз объявляется в списке параметров функции. Как правило, лучшей практикой программирования является объявление союзов вне списка параметров, поскольку они никогда не смогут стать завершенными типами, будучи определены в списках параметров.

anonymous variadic macros were introduced in C99

Макрос, принимающий переменной количество аргументов, является особенностью C99.

argument ‘identifier ‘ might be clobbered by ‘longjmp’ or ‘vfork’

Аргумент может быть изменен вызовом longjmp. Это предупреждение возможно только при оптимизирующей компиляции.

DS51284H(ru) стр. C-20

© 2008 Microchip Technology Inc.

Приложение C Диагностика

array ‘identifier ‘ assumed to have one element

Длина указанного массива явно не указана. При отсутствии противоположной информации компилятор считает его состоящим из одного элемента.

array subscript has type ‘char ‘

Индекс массива имеет тип char.

array type has incomplete element type

Типы массивов не должны быть незавершенными типами элементов.

asm operand n probably doesn’t match constraints

Указанный расширенный операнд ассемблера не

.

соответствует его ограничениям.

assignment of read-only member ‘name

Указанный член объявлен как константа

и не может модифицироваться

присвоением.

Wilson

A

assignment of read-only variable ‘name

Указанная переменная объявлена как константа и не может модифицироваться присвоением.

identifier ‘ attribute directive ignored

Указанный атрибут неизвестен или не поддерживается, поэтому игнорируется.

identifier ‘ attribute does not apply to types

Указанный атрибут не может использоваться с типами. Он игнорируется.

identifier ‘ attribute ignored

Указанный атрибут не имеет значения в данном контексте и поэтому игнорируется.

attribute‘ attribute only applies to function types

Указанный атрибут применим только к возвращаемым типам функций и не

применим к другим объявлениям.by

B

Translated

backslash and newline separated by space

При обработке escape последовательностей были обнаружены символы backslash и newline, разделенные пробелом.

backslash-newline end of file

При обработке escape последовательностей в конце файла были обнаружены символы backs ash и newline.

bit-field ‘identifier ‘ type invalid in ISO C

Тип, использованный для указанного идентификатора запрещен в ISO Си. braces round scalar initializer

Заданы лишние скобки вокруг инициализатора. built-in function ‘identifier ‘ declared as non-function

Указанная функция имеет такое же имя, как встроенные функции, но объявляется как нечто иное, чем функция.

C

C++ style comments are not allowed in ISO C89

Используйте комментарии в стиле Си ‘/*‘ и ‘*/‘ вместо комментариев в стиле Си++ ‘//‘.

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. C-21

16-битовый компилятор Си. Руководство

call-clobbered register used for global register variable

Выбирайте регистры, которые обычно сохраняются и восстанавливаются вызовами функций (W8-W13), что не позволит библиотечным функциям повредить их содержимое.

cannot inline function ‘main’

Функция main объявляется с атрибутом inline. Это не поддерживается, т.к. main должна вызываться из стартового кода, который компилируется отдельно.

can’t inline call to ‘identifier ‘ called from here

Компилятор не может создать inline вызов указанной функции.

case value ‘n‘ not in enumerated type

A

тип перечисления, тогда как

Управляющее выражение в операторе switch имеет.

выражение в варианте выбора имеет значение n, которое не соответствует ни

одному из значений перечисления.

case value ‘value‘ not in enumeratedWilsontype ‘ ame

Указанное значение в дополнительном варианте оператора выбора не является элементом указанного типа перечисления.

cast does not match function type

Возвращаемое функцией значение приводится к типу, который не соответствует типу функции.

cast from pointer to integer of different size

Указатель приводится к целому, которое не является 16-битовым.

cast increases required alignment of target type

При компиляции с опцией командной строки -Wcast-align, компилятор проверяет,

чтобы приведение типов не увеличивало необходимое выравнивание целевого типа.

Например, это предупреждающееby

сообщение будет выдано, если указатель на char

Translated

приводится к указателю на int, поскольку выравнивание для char (выравнивание

байтов) меньше, чем выравнивание необходимое для int (выравнивание слов).

character constant too long

Символьная константа не должна быть такой длинной.

comma end of enumerator list

Ненужная запятая в конце списка перечисления.

comma operator in operand of #if

Неожиданный оператор-запятая в директиве #if. compari g floating point with == or != is unsafe

Значения с плавающей точкой могут приближаться к бесконечно точным реальным числам. Вместо проверки на равенство используйте операторы сравнения, чтобы определить, имеют ли эти два значения перекрывающиеся диапазоны.

comparison between pointer and integer

Указатель сравнивается с целым.

comparison between signed and unsigned

Один из операндов сравнения знаковый, тогда как другой — беззнаковый. Знаковый операнд будет рассматриваться как беззнаковое значение, что может быть неправильно.

DS51284H(ru) стр. C-22

© 2008 Microchip Technology Inc.

Приложение C Диагностика

comparison is always n

Сравнение включает в себя только константные выражения, поэтому компилятор может определить результат сравнения еще на этапе компиляции. Результат всегда будет указанным числом.

comparison is always n due to width of bit-field

Результатом операции сравнения с участием битового поля из-за размера битового поля всегда будет указанное число.

comparison is always false due to limited range of data type

Результат операции сравнения на этапе исполнения всегда ложным из-за диапазона

типов данных.

.

A

comparison is always true due to limited range of data type

Результат операции сравнения на этапе исполнения всегда истинным из-за

диапазона типов данных.

Wilson

comparison of promoted ~unsigned with co stant

Один из операндов операции сравнения является расширением побитовой инверсии беззнакового значения, а другой — константой.

comparison of promoted ~unsigned with unsigned

Один из операндов операции сравнения является расширением побитовой инверсии беззнакового значения, а другой — просто беззнаковым.

comparison of unsigned expression >= 0 is always true

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

comparison of unsigned expression < 0 is always false

Сравнение беззнаковой величины с нулем. Поскольку беззнаковое не может быть

меньше нуля, результат сравненияby

на этапе исполнения всегда будет ложным.

Translated

comparisons like X<=Y<=Z do not have their mathematical meaning

Выражение в Си необязательно означает то же, что и в математике. В частности выражение Си X<=Y<=Z не является эквивалентом математического выражения

X Y Z.

conflicting types for built-in function ‘identifier

Указанная функция имеет то же имя, что и встроенная, но объявляется с конфликтующим типом.

const declaration for ‘identifier ‘ follows non-const

Указанный идентификатор был объявлен как константа после того как ранее он был объявлен не константой.

control reaches end of non-void function

Все пути выхода из функции, возвращающей непустое значение, должны приводить к возврату соответствующей величины. Компилятор обнаружил вариант, когда непустая функция заканчивается без явно заданного возвращаемого значения. Это, таким образом, может привести к получению непредсказуемого результата.

conversion lacks type at end of format

При проверке списка аргументов вызываемых функций printf, scanf и т.п. компилятор обнаружил потерю спецификатора типа в поле формата строки форматирования.

concatenation of string literals with __FUNCTION__ is deprecated

__FUNCTION__ будет обработана также, как __func__ (которая определяется стандартом ISO C99). __func__ — это переменная, а не строковый литерал, поэтому она не соединяется с другими строковыми литералами.

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. C-23

16-битовый компилятор Си. Руководство

conflicting types for ‘identifier

Указанный идентификатор имеет многократные и несовместимые объявления.

D

data definition has no type or storage class

Обнаружено определение данных с пропущенным типом и классом памяти.

data qualifier ‘qualifier ‘ ignored

Квалификатор данных, включающий access, shared и overlay, не используется в компиляторе, но может быть тут для совместимости с MPLAB Си компилятором для

PIC18.

.

declaration of ‘identifier ‘ has ‘extern’ and is initialized

Внешний идентификатор не должен инициализироваться.

declaration of ‘identifier ‘ shadows a parameterA

Wilson

Объявление указанного идентификатора «затеняет» параметр, делая его недоступным.

declaration of ‘identifier ‘ shadows a symb l from the parameter list

Объявление указанного идентификатора «затеняет» символ из списка параметров, делая его недоступным.

declaration of ‘identifier ‘ shadows global declaration

Объявление указанного идентификатора «затеняет» глобальное объявление, делая его недоступным.

identifier ‘ declared inline after being called

Указанная функция объявленаby inline уже после того, как она была вызвана.

identifier ‘ declared inline after its definition

Указанная функция объявлена inline уже после того, как она была определена.

identifierTranslated‘ declared ‘static’ but never defined

Указанная функция объявлена static, но не была определена. decrement of read-only member ‘name

Указанный член был объявлен как const и не может быть модифицирован декрементом.

decrement of read-only variable ‘name

Указанная переменная была объявлена как const и не может быть модифицирована декрементом.

identifier ‘ defined but not used

Указанная функция была определена, но никогда не использовалась. deprecated use of label at end of compound statement

Метка не должна быть в конце сложного оператора, за ней должен следовать оператор.

dereferencing ‘void *’ pointer

Разыменование указателя void * некорректно. Перед разыменованием приведите его к указателю на подходящий тип.

division by zero

На этапе компиляции выявлено деление на ноль.

duplicate ‘const’

Квалификатор const должен быть применен к объявлению только один раз.

DS51284H(ru) стр. C-24

© 2008 Microchip Technology Inc.

Приложение C Диагностика

duplicate ‘restrict’

Квалификатор restrict должен быть применен к объявлению только один раз.

duplicate ‘volatile’

Квалификатор volatile должен быть применен к объявлению только один раз.

E

embedded » in format

При проверке списка аргументов вызываемых функций printf, scanf и т.п. компилятор обнаружил » (ноль) в строке форматирования, что может привести к

преждевременному окончанию ее обработки.

.

empty body in an else-statement

Пустое тело оператора else.

A

empty body in an if-statement

Пустое тело оператора if.

empty declaration

Объявление не содержит объявляемых имен.

empty range specified

Wilson

Диапазон значений в варианте оператора выбора пуст, т.е. величина нижнего выражения больше величины верхнего. Напомним, что синтаксис диапазона вариантов должен быть case low high:.

‘enum identifier ‘ declared inside parameter list

Указанное перечисление объявляется в списке параметров функции. Как правило, лучшей практикой программированияby является объявление перечислений вне списка параметров, поскольку они никогда не смогут стать завершенными типами, будучи определены в списках параметров.

enum defined inside parms

ПеречислениеTranslatedобъявлено в списке параметров функции. enumeration value ‘id ntifier ‘ not handled in switch

Управляющее выражение оператора выбора имеет тип перечисления, но не все значения перечисления имеют соответствующие им выражения вариантов ветвления.

enumeration va ues exceed range of largest integer

Величины перечисления представляются целыми. Компилятор определил, что диапазон перечисления не может быть представлен каким-либо из целых форматов компилятора, в том числе и и самым большим.

excess elements in array initializer

В списке инициализации больше элементов, чем требуется для соответствующего ему массива.

excess elements in scalar initializer

Для инициализации скалярной переменной нужен только один инциализатор.

excess elements in struct initializer

В списке инициализации больше элементов, чем требуется для соответствующей ему структуры.

excess elements in union initializer

В списке инициализации больше элементов, чем требуется для соответствующего ему союза.

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. C-25

16-битовый компилятор Си. Руководство

extra semicolon in struct or union specified

Тип структуры или союза содержит лишнюю точку с запятой.

extra tokens at end of #’directive‘ directive

Компилятор обнаружил лишний текст в исходной строке, содержащей указанную директиву.

F

-ffunction-sections may affect debugging on some targets

При одновременном указании опций командной строки –g и –function–sections

возможны проблемы с отладкой.

.

first argument of ‘identifier ‘ should be ‘int’

Ожидаемое объявление первого аргумента указанного идентификатора должно

иметь тип int.

A

floating constant exceeds range of ‘double’

Константа с плавающей точкойWilsonслишком большая или слишком маленькая (по абсолютной величине), чтобы быть представленной как double.

floating constant exceeds range of ‘float’

Константа с плавающей точкой слишком большая или слишком маленькая (по абсолютной величине), чтобы быть представленной как float.

floating constant exceeds range of ‘long double’

Константа с плавающей точкой слишком большая или слишком маленькая (по абсолютной величине), чтобы быть представленной как long double.

floating point overflow in expressionby

При сворачивании константного выражения с плавающей точкой компилятор обнаружил переполнение, т.е. оно не может быть представлено как float.

type1‘ format, ‘type2‘ arg (arg ‘num‘)

format argument is not a pointer (arg n)

ФорматTranslatedдля первого указанного типа, а аргумент имеет второй указанный тип. Предупреждение относится к аргументу с номером ‘num‘.

При проверке списка аргументов вызываемых функций printf, scanf и т.п. компилятор обнаружил что аргумент n не является указателем, каким должен быть в соответствии со спецификацией формата.

format argument is not a pointer to a pointer (arg n)

При проверке списка аргументов вызываемых функций printf, scanf и т.п. компилятор обнаружил что аргумент n не является указателем, каким должен быть в соответствии со спецификацией формата.

fprefetch-loop-arrays not supported for this target

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

function call has aggregate value

Возвращаемое функцией значение является объединением. function declaration isn’t a prototype

При компиляции с опцией -Wstrict-prototypes компилятор предполагает, что для всех функций будут заданы прототипы. В данном случае встретилось определение функции, предшествующее прототипу.

DS51284H(ru) стр. C-26

© 2008 Microchip Technology Inc.

Приложение C Диагностика

function declared ‘noreturn’ has a ‘return’ statement

Функция была объявлена с атрибутом noreturn и поэтому не должна содержать оператор return. Это противоречие.

function might be possible candidate for attribute ‘noreturn’

Компилятор определил, что функция не имеет возврата. Если функция будет объявлена с атрибутом noreturn, компилятор получит возможность сгенерировать лучший код.

function returns address of local variable

Функция не должна возвращать адрес локальной переменной, поскольку после

.

выхода из функции память локальной переменной освобождается.

function returns an aggregate

A

Возвращаемое функцией значение является объединением.

Wilson

function ‘name‘ redeclared as inline previous declaration of function ‘name‘ with attribute noinline

Указанная функция повторно объявлена с ключевым словом inline, что позволяет теперь встраивать ее код.

function ‘name‘ redeclared with attribute noinline previous declaration of function ‘name‘ was inline

Указанная функция повторно объявлена с атрибутом noinline, поэтому теперь ее код не может быть встроен.

function ‘identifier ‘ was previously declared within a block

Указанная функция уже объявленаby непосредственно внутри блока, тем не менее она имеет неявное объявление в текущей строке.

G

GCC does not yet properly implement ‘[*]’ array declarators

МассивыTranslatedпеременного размера на настоящий момент не поддерживаются компилятором.

H

hex escape sequence out of range

Шестнадцатеричная escape последовательность не должна превышать шестнадцатеричное значение 100 (десятичное 256).

I

ignoring m-specifier for non-static local variable ‘identifier

Спецификатор ассемблера игнорируется при использовании с указанной нерегистровой локальной переменной.

ignoring invalid multibyte character

При обнаружении многобайтового символа компилятор определяет его как ошибочный. Ошибочные символы игнорируются.

ignoring option ‘option‘ due to invalid debug level specification

Указанная опция отладки используется запрещенным уровнем отладки.

ignoring #pragma identifier

Указанная прагма не поддерживается компилятором и будет проигнорирована.

imaginary constants are a GCC extention

ISO Си не допускает мнимых числовых констант.

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. C-27

16-битовый компилятор Си. Руководство

implicit declaration of function ‘identifier

Указанная функция не была ранее явно описана (определением или прототипом), поэтому компилятор сделает допущения о типе возвращаемого значения и параметрах.

increment of read-only member ‘name

Указанный член был объявлен как const и не может быть модифицирован инкрементом.

increment of read-only variable ‘name

Указанная переменная была объявлена как const и не может быть

модифицирована инкрементом.

.

initialization of a flexible array member

A

Элемент незавершенного массива предназначается для динамического, а не статического размещения.

identifier ‘ initialized and declaredWilson‘exter ‘

Указанный идентификатор не должен инициализироваться, т.к. он внешний. initializer element is not constant

Элемент инициализатора должен быть константой. inline function ‘name‘ given attribute noinline

Указанная функция была ранее объявлена inline, но атрибут noinline препятствует в дальнейшем рассматривать ее как встраиваемую.

inlining failed in call to ‘identifier ‘ called from here

Компилятор не смог inline byвстроить указанную функцию. integer constant is so large that it is unsigned

Величина целой константы появилась в исходном коде без явного беззнакового

integer constant is too large for ‘type‘ type

модификатора, но число не может быть представлено как знаковое целое, поэтому компиляторTranslatedбудет автоматически трактовать его как беззнаковое целое.

Целая константа не должна превышать 2^32 – 1 для unsigned long int, 2^63 – 1 для long long int и 2^64 – 1 для unsigned long long int.

integer overflow in expression

При свертывании целого константного выражения компилятор обнаружил переполнение, а это означает, что оно не может быть представлено как целое.

invalid application of ‘sizeof’ to a function type

Не рекомендуется применять оператор sizeof к функциям. inv lid pplication of ‘sizeof’ to a void type

Нельзя применять оператор sizeof к типу void. invalid digit ‘digit’ in octal constant

Все цифры должны быть в пределах основания используемой системы счисления. Например, для восьмеричной системы можно использовать цифры от 0 до 7.

invalid second arg to __builtin_prefetch; using zero

Второй аргумент должен быть 0 или 1.

invalid storage class for function ‘name

Для функций, определенных на самом верхнем уровне, нельзя использовать класс памяти auto, а для функций, определенных не на верхнем уровне, нельзя использовать класс памяти static.

DS51284H(ru) стр. C-28

© 2008 Microchip Technology Inc.

Приложение C Диагностика

invalid third arg to __builtin_prefetch; using zero

Третий аргумент должен быть 0, 1, 2 или 3.

identifier ‘ is an unrecognized format function type

Указанный идентификатор, использованный в атрибуте форматирования, не является одним из допустимых типов форматов функций printf, scanf или strftime.

identifier ‘ is narrower than values of its type

Член структуры, являющийся битовым полем, имеет тип перечисления, но ширина поля не позволяет представить все значения перечисления.

storage class‘ is not at beginning of declaration

A

объявления. Класс памяти

Указанный описатель класса памяти стоит не в начале.

должен быть первым в объявлении.

ISO C does not support complexWilsoninteger types

ISO C does not allow extra ‘;’ outside of a function

Лишняя точка с запятой обнаружена вне функции. Это не разрешается в ISO Си.

ISO C does not support ‘++’ and ‘—‘

c mplex types

Операторы инкремента и декремента не поддерживаются для комплексных типов в ISO Си.

ISO C does not support ‘~’ for comp ex conjugation

Оператор побитовой инверсии не может использоваться для комплексного сопряжения в ISO Си.

by

short

int, не

Целые комплексные типы, как например __complex__

поддерживаются в ISO Си.

ISO C does not support plain ‘complex’ meaning ‘double complex’

ISO C does not support the ‘char‘ ‘kind of format ‘ format

Использование complex__ без других модификаторов эквивалентно ‘complex doubleTranslated‘, который не поддерживается в ISO Си.

ISO Си не поддерживает задание указанного символа для указанного формата.

ISO C doesn’t support unnamed structs/unions

Все структуры и/или союзы должны быть поименованы в ISO Си.

ISO C forbids empty source file

Файл не содержит функций или данных. Это запрещается в ISO Си.

ISO C forbids empty initializer braces

ISO Си предполагает наличие значений инициализации внутри фигурных скобок.

ISO C forbids nested functions

Функция была определена внутри другой функции.

ISO C forbids omitting the middle term of a ?: expression

Условное выражение требует наличия среднего члена или выражения между ‘?‘ и ‘:‘.

ISO C forbids qualified void function return type

Нельзя использовать квалификатор типа для функции, не возвращающей значения.

ISO C forbids range expressions in switch statements

ISO Си не позволяет задавать диапазон непрерывных значений в варианте оператора выбора.

ISO C forbids subscripting ‘register’ array

Индексированный регистровый массив запрещен в ISO Си.

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. C-29

16-битовый компилятор Си. Руководство

ISO C forbids taking the address of a label

В ISO Си невозможно получить адрес метки.

ISO C forbids zero-size array ‘name

Размер указанного массива должен быть больше нуля.

ISO C restricts enumerator values to range of ‘int’

Диапазон значений перечисления не должен превышать диапазона целого типа.

ISO C89 forbids compound literals

В ISO C89 запрещены сложные литералы.

.

ISO C89 forbids mixed declarations and code

A

Объявления должны быть сделаны до написания какого-либо кода. Они не должны

смешиваться с кодом.

ISO C90 does not support ‘[*]’ array declarators

Wilson

Массивы переменного размера не поддерживаются в ISO C90.

ISO C90 does not support complex types

Комплексные типы, такие как __complex__ float x, не поддерживаются в ISO C90.

ISO C90 does not support flexible array members

Незавершенный тип массива является новой возможностью в C99. ISO C90 его не поддерживает.

ISO C90 does not support ‘long long’

Тип long long не поддерживается в ISO C90.

ISO C90 does not support ‘static’ or type qualifiers in parameter array declarators

Когда массив используется в качестве параметра функции, ISO C90 не разрешает

применять для его объявленияby

static и квалификаторы типа.

Translated

ISO C90 does not support the ‘char ‘ ‘function‘ format

ISO Си не поддерживает указанный символ в спецификации формата указанной функции.

ISO C90 does not support the ‘modifier ‘ ‘function‘ length modifier

Указанный модификатор не поддерживается для объявления длины типа указанной функции.

ISO C90 forbids variable-size array ‘name

В ISO C90 количество элементов массива должно быть задано целым константным выражением.

L

label ‘identifier ‘ defined but not used

Указанная метка была определена, но ссылки на нее не было. large integer implicitly truncated to unsigned type

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

left-hand operand of comma expression has no effect

Один из операндов операции сравнения является расширением побитовой инверсии беззнакового значения, а другой — просто беззнаковым.

DS51284H(ru) стр. C-30

© 2008 Microchip Technology Inc.

Приложение C Диагностика

left shift count >= width of type

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

left shift count is negative

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

library function ‘identifier ‘ declared as non-function

Указанная функция имеет то же имя, что и библиотечная, в добавок объявляется как нечто другое, а не функция.

line number out of range

A

Ограничение на номер строки в директиве

составляет 32767 в C89 и

#line.

2147483647 в C99.

Wilson

M

identifier ‘ locally external but globally static

Указанный идентификатор является локально внешним, но глобально статическим. Это подозрительно.

location qualifier ‘qualifier ‘ ignored

Квалификаторы размещения, включая ‘gpr‘ и ‘sfr‘, не используются в компиляторе, но могут присутствовать для совместимости с MPLAB Си компилятором для PIC18.

‘long’ switch expression not converted to ‘int’ in ISO C

ISO Си не преобразует выражение в операторе выбора из long в int.

‘main’ is usually a functionby

Идентификатор main обычно используется для обозначения главной точки входа в программу. Компилятор обнаружил, что он был использован другим способом,

например, для обозначения имени переменной..

Указатель неявно преобразован в целое.

operationTranslated‘ makes integer from pointer without a cast

operation‘ makes pointer from integer without a cast

Целое неявно преобразовано в указатель. malformed ‘#pr gma pack-ignored’

Ошибочный синтаксис прагмы.

malformed ‘#pragma pack(pop[,id])-ignored’

Ошибочный синтаксис прагмы.

malformed ‘#pragma pack(push[,id],<n>)-ignored’

Ошибочный синтаксис прагмы. malfo med ‘#pragma weak-ignored’

Ошибочный синтаксис прагмы.

identifier ‘ might be used uninitialized in this function

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

missing braces around initializer

Пропущены необходимые вокруг инициализатора фигурные скобки.

missing initializer

Пропущен инициализатор.

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. C-31

16-битовый компилятор Си. Руководство

modification by ‘asm’ of read-only variable ‘identifier

Константная переменная находится в левой части операции присваивания в операторе ассемблера.

multi-character character constant

Указанная символьная константа содержит более одного символа.

N

negative integer implicitly converted to unsigned type

Отрицательная целая константа обнаружена в исходном коде, но число не может

nested extern declaration of ‘identifier

.

Для указанного идентификатора обнаружены вложенныеA

внешние определения.

no newline at end of file

Последняя строка исходного файла не заканчивается символом новой строки.

быть представлено как целое со знаком, поэтому компилятор автоматически трактует ее как беззнаковую целую.

В данном случае обнаружено определениеWilson функции без предшествующего ему объявления.

no previous declaration for ‘identifier

При компиляции с опцией командной строки -Wmissing-declarations

компилятор ожидает, что функции объявляются до того, как они будут определены.

no previous prototype for ‘identifier

При компиляции с опцией командной строки -Wmissing-prototypes компилятор ожидает, что прототипы функцийby определяются для всех функций. В данном случае обнаружено определение функции без предшествующего ему прототипа.

no semicolon at end of struct or union

Пропуск точки с запятой в конце объявления структуры или союза.

non-ISO-standard escape sequence, ‘seq

nonTranslated-static decl tion for ‘identifier ‘ follows static

Указанная последовательность ‘e’ или ‘E’ является расширением стандарта ISO. Последовательность может быть использована в строковой или символьной константе и заменяет ASCII символ <ESC>.

Указанный идентификатор был объявлен сначала как static, а теперь объявлен как не static.

‘noreturn’ function does return

Функция, объявленная с атрибутом noreturn делает возврат. Это нелогично.

‘noreturn’ function returns non-void value

Функция, объявленная с атрибутом noreturn делает возврат. Это нелогично. null format string

При проверке списка аргументов вызова printf, scanf и т.п. компилятор обнаружил отсутствие строки форматирования.

O

octal escape sequence out of range

Восьмеричная escape последовательность должна быть меньше восьмеричного числа 400 (или десятичного 256).

output constraint ‘constraint ‘ for operand n is not at the beginning

Указанные выходные ограничения (уточнения) в расширенной форма оператора asm должны быть в начале.

DS51284H(ru) стр. C-32

© 2008 Microchip Technology Inc.

Приложение C Диагностика

overflow in constant expression

Константное выражение превысило пределы диапазона представляемых величин для своего типа.

overflow in implicit constant conversion

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

P

parameter ‘identifier ‘ points to incomplete type

parameter has incomplete type

Параметр функции имеет незавершенный тип.

parameter names (without types) in function declaration.

Объявление функции использует список параметровA

без их типов.

parameter points to incomplete type

Параметр функции указывает на незавершенный тип.

Wilson

Указанный параметр функции указывает на незавершенный тип.

passing arg ‘number ‘ of ‘name‘ as complex rather than floating due to prototype

В прототипе указанной функции аргумент с указанным номером определяется как complex, но используется значение типа float, поэтому компилятор преобразует его в complex в соответствии с прототипом.

passing arg ‘number ‘ of ‘name‘ as complex rather than integer due to prototype

В прототипе указанной функцииby аргумент с указанным номером определяется как complex, но используется значение типа integer, поэтому компилятор преобразует его в complex в соответствии с прототипом.

passing arg ‘number ‘ of ‘name‘ as floating rather than complex due to prototype

его во float в соответствии с прототипом.

В Translatedпрототипе указанной функции аргумент с указанным номером определяется как float, но используется значение типа complex, поэтому компилятор преобразует

passing arg ‘number ‘ of ‘name‘ as ‘float’ rather than ‘double’ due to prototype

В прототипе указанной функции аргумент с указанным номером определяется как float, но используется значение типа double, поэтому компилятор преобразует его во float в соответствии с прототипом.

passing arg ‘number ‘ of ‘name‘ as floating rather than integer due to prototype

В прототипе указанной функции аргумент с указанным номером определяется как flo , но используется значение целого типа, поэтому компилятор преобразует его во flo t в соответствии с прототипом.

passing arg ‘number ‘ of ‘name‘ as integer rather than complex due to prototype

В прототипе указанной функции аргумент с указанным номером определяется как целого типа, но используется значение типа complex, поэтому компилятор преобразует его в целое в соответствии с прототипом.

passing arg ‘number ‘ of ‘name‘ as integer rather than floating due to prototype

В прототипе указанной функции аргумент с указанным номером определяется как целого типа, но используется значение типа float, поэтому компилятор преобразует его в целое в соответствии с прототипом.

pointer of type ‘void *’ used in arithmetic

Указатель на тип void не имеет размера и не должен использоваться в арифметическом выражении.

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. C-33

16-битовый компилятор Си. Руководство

pointer to a function used in arithmetic

Указатель на функцию не должен использоваться в арифметическом выражении.

previous declaration of ‘identifier

Данное предупреждение появляется вместе с другим предупреждением, которое определяет положение подозрительного кода. Данное сообщение указывает на первое объявление или определение указанного идентификатора.

previous implicit declaration of ‘identifier

Данное предупреждение появляется совместно с предупреждением «type mismatch with previous implicit declaration». Оно определяет положение неявного объявления идентификатора, конфликтующего с явным объявлением.

R

.

«name» re-asserted

A

Повторный ответ (в директиве #assert) для указанного имени.

«name» redefined

Указанное имя было определено ранее и переопределяется здесь.

redefinition of ‘identifier

Wilson

Указанный идентификатор имеет многократные несовместимые определения.

redundant redeclaration of ‘ident f er ‘ in same scope

Указанный идентификатор был снова объявлен в той же области действия. Это излишне.

register used for two global register variables

by

Две глобальных регистровых переменных определены с использованием одного и

того же регистра.

repeated ‘flag‘ flag in format

Translated

компилятор нашел

При проверке списка аргументов вызова strftime

повторяющийся флаг в строке форматирования.

При проверке списка аргументов вызова prinf, scanf

и т.п. компилятор

обнаружил, что один из флагов { ,+,#,0,–} в строке форматирования повторяется. return-type defaul s to ‘int’

При отсутствии явного задания типа возвращаемого функцией значения, компилятор предполагает, что функция возвращает величину типа int.

return type of ‘name‘ is not ‘int’

Компилятор предполагает, что возвращаемое значение для указанной функции будет i .

‘return’ with a value, in function returning void

Функция была объявлена, как void, но возвращает значение.

‘return’ with no value, in function returning non-void

Функция, объявленная как возвращающая непустое значение, содержит оператор возврата без значения. Это нелогично.

right shift count >= width of type

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

right shift count is negative

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

DS51284H(ru) стр. C-34

© 2008 Microchip Technology Inc.

shift count is negative

Приложение C Диагностика

S

second argument of ‘identifier ‘ should be ‘char **’

Предположительно, второй аргумент указанного идентификатора должен быть типа char **.

second parameter of ‘va_start’ not last named argument

Второй параметр va_start должен быть последним именованным аргументом.

shadowing built-in function ‘identifier

Указанная функция имеет то же имя, что и встроенная функция и, следовательно,

будет «затенять» эту функцию.

.

shadowing library function ‘identifier

Указанная функция имеет то же имя, что и библиотечная функция и, следовательно,

будет «затенять» эту функцию.

A

влево не означает сдвига вправо,Wilsonтакже как и при сдвиге вправо, он не означает сдвига влево, он просто не имеет смысла.

shift count >= width of type

Счетчик сдвига должен быть меньше, чем количество битов в сдвигаемом типе. В

противном случае сдвиг становится бессмысленным, а результат неопределенным.

Счетчик сдвига должен быть положительным. Отрицательный счетчик при сдвиге

size of ‘name‘ is larger than n bytes

Использование опции -Wlarger-than-len будет приводить к выводу такого by

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

size of ‘identifier ‘ is n ytes

size of return value of ‘name‘ is larger than n bytes

Размер указанной переменной, который составляет указанное количество байтов, превышаетTranslatedзаданную опцией -Wlarger-than-len величину.

Использование опции -Wlarger-than-len будет приводить к выводу такого предупреждения, когда размер возвращаемого указанной функцией значения превысит указанное количество байтов.

size of return value of ‘identifier ‘ is n bytes

Размер возвращаемого указанной функцией значения, который составляет указанное количество байтов, превышает заданную опцией -Wlarger-than-len величину.

spurious trailing ‘%’ in format

При проверке списка аргументов вызова printf, scanf и т.п. компилятор обнаружил ложный замыкающий символ ‘%‘ в строке форматирования.

statement with no effect

Нерабочий оператор.

static declaration for ‘identifier ‘ follows non-static

Указанный идентификатор объявлен как static, а ранее он был объявлен как не static.

string length ‘n‘ is greater than the length ‘n‘ ISO Cn compilers are required to support

Максимальная длина строки в ISO C89 — 509. Максимальная длина строки в ISO C99 — 4095.

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. C-35

subscript has type ‘char’

Индекс массива имеет тип

16-битовый компилятор Си. Руководство

‘struct identifier ‘ declared inside parameter list

Указанная структура объявлена в списке параметров функции. Обычно лучшей практикой программирования считается объявление структур вне списка параметров, поскольку они никогда не могут стать завершенными типами, будучи объявлены в списке параметров.

struct has no members

Пустая структура, отсутствуют члены.

structure defined inside parms

Структура определяется внутри списка параметров функции.

style of line directive is a GCC extension

Используйте формат ‘#line linenum‘ в традиционном.

Си.

A

suggest explicit braces to avoid ambiguous ‘else’

Вложенный оператор if имеет неоднозначное продолжение else. Рекомендуется использовать фигурные скобки для ликвидации двусмысленности.

suggest hiding #directive from traditional C with an indented #

Указанная директива не принадлежит к традиционному Си и может быть скрыта (hidden) отступом символа #. Директива игнорируется, если ее символ # не на первой позиции в строке.

suggest not using #elif in traditional C

char.Wilson

#elif не должна использоватьсяby в традиционном Си по Кернигану и Ритчи. suggest parentheses around assignment used as truth value

Когда присвоение используется как истинное значение, его следует заключить в

suggest parenth s around && within ||

простые скобки, с целью сделать понятным при чтении исходной программы. suggestTranslatedparentheses around + or — inside shift

suggest parenth s s around arithmetic in operand of | suggest paren heses around comparison in operand of | suggest parentheses around arithmetic in operand of ^ suggest parentheses around comparison in operand of ^ suggest parentheses around + or — in operand of & suggest parentheses around comparison in operand of &

Хотя в Си приоритет операторов четко определен, но иногда читателю выражения, возможно, потребуется потратить дополнительно несколько микросекунд для понимания порядка вычисления операндов в выражениях, если читатель должен полагаться исключительно на приоритет правил, без помощи явно заданных скобок. Примером этого является использование операций «+» или «–» внутри сдвига. Многие читатели будут избавлены от лишних усилий, если использование скобок ясно выразит намерение программиста, даже если эти намерения являются однозначными для программиста и компилятора.

T

identifier ‘ takes only zero or two arguments

Ожидается ноль или только два аргумента.

the meaning of ‘a’ is different in traditional C

Когда используется опция -wtraditional, escape последовательность ‘a‘ не распознается как метасимвол, ее значение будет просто ‘a’. В нетрадиционном Си ‘a‘ представляет собой ASCII символ BEL.

DS51284H(ru) стр. C-36

© 2008 Microchip Technology Inc.

too many arguments for format

too few arguments for format

Приложение C Диагностика

the meaning of ‘x’ is different in traditional C

Когда используется опция -wtraditional, escape последовательность ‘x‘ не распознается как метасимвол, ее значение будет просто ‘x’. В нетрадиционном Си ‘x‘ представляет собой начало шестнадцатеричной escape последовательности.

third argument of ‘identifier ‘ should probably be ‘char **’

Предположительно, третий аргумент указанного идентификатора должен быть типа char **.

this function may return with or without a value

Все пути выхода

из функции типа, отличного от

void, должны возвращать

соответствующее

.

вариант, когда подобная

значение. Компилятор обнаружил

A

функция завершается иногда с, а иногда и без явного возврата величины. Таким

образом, возвращенное значение может быть непредсказуемым.

this target machine does not have delayed branches

Wilson

Опция -fdelayed-branch не поддерживается.

При проверке списка аргументов вызова printf, scanf и т.п. компилятор обнаружил, что фактическое число аргументов меньше, чем требует строка форматирования.

При проверке списка аргументов вызова printf, scanf и т.п. компилятор обнаружил, что фактическое число аргументов больше, чем требует строка

traditional C ignores #’directive‘ with the # indented

Традиционно директива игнорируется, если начинается с символа #, стоящего на на первой позиции в строке.

traditionalTranslatedC rejects initialization of unions

Союзы не могут инициализироваться в традиционном Си. traditional C rejects the ‘ul’ suffix

Суффикс ‘u‘ не разрешается в традиционном Си. traditional C rejects the unary plus operator

Унарный плюс запрещен в традиционном Си. trigraph ??char converted to char

Триграфы, которые представляют собой трехсимвольные последовательности, могут использоваться для представления символов, отсутствующих на клавиатуре. Триграфы преобразуются следующим образом:

??( = [ ??) = ] ??< = { ??> = } ??= = # ??/ = ??’ = ^ ??! = | ??- = ~

trigraph ??char ignored

Триграф игнорируется. Указанный символ должен быть одним из: (, ), <, >, =, /, ‘, !, или –.

type defaults to ‘int’ in declaration of ‘identifier

Из-за отсутствия явного объявления типа для указанного идентификатора компилятор предполагает, что его тип int.

type mismatch with previous external decl previous external decl of ‘identifier

Тип указанного идентификатора не соответствует предыдущему объявлению.

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. C-37

16-битовый компилятор Си. Руководство

type mismatch with previous implicit declaration

Явное объявление конфликтует с предыдущим неявным объявлением.

type of ‘identifier ‘ defaults to ‘int’

Из-за отсутствия явного объявления типа для указанного идентификатора компилятор предполагает, что его тип int.

type qualifiers ignored on function return type

Квалификатор, использованный для типа возвращаемого функцией значения, игнорируется.

defined не может быть использовано в качестве имени макроса и не должно

переопределяться.

A

undefining ‘name

Директива #undef использована для определенного ранее макроса с указанным именем.

union cannot be made transparent

Атрибут transparent_union был использован для союза, но заданная переменная не соответствует требованиям этого атрибута.

‘union identifier ‘ declared inside parameter list

Указанный союз объявлен в списке параметров функции. Обычно лучшей практикой

программирования считается

Wilsonобъявление союзов вне списка параметров,

by

поскольку они никогда не могут стать завершенными типами, будучи объявлены в списке параметров.

union defined inside parms

Союз пустой, члены отсутствуют.

Союз объявлен внутри списка параметров функции. unionTranslatedhas no members

unknown conversion type character ‘character‘ in format

При проверке списка аргументов вызова printf, scanf и т.п. компилятор обнаружил запрещенный (нераспознаваемый) символ преобразования в строке форматирования

unknown conversion type character 0xnumber in format

При проверке списка аргументов вызова printf, scanf и т.п. компилятор обнаружил, запрещенный (нераспознаваемый) символ преобразования в строке форматирования

unknown escape sequence ‘sequence

Указанная escape последовательность недопустима. Escape последовательность должна начинаться с символа » и использовать следующие символы: n, t, b, r, f, b, , ‘, «, a, ?, а также восьмеричное или шестнадцатеричное число. Восьмеричное число должно быть меньше восьмеричного значения 400. Шестнадцатеричное число должно начинаться на ‘x’ и должно быть меньше шестнадцатеричного значения 100.

unnamed struct/union that defines no instances

Неименованная и пустая структура или союз.

unreachable code at beginning of identifier

В начале указанной функции обнаружен недоступный код.

unrecognized gcc debugging option: char

Указанный символ является запрещенной буквой для опции отладки вида -dбуквы.

DS51284H(ru) стр. C-38

© 2008 Microchip Technology Inc.

Приложение C Диагностика

unused parameter ‘identifier

Указанный параметр функции не используется функцией.

unused variable ‘name

Указанная переменная была объявлена но не использовалась.

use of ‘*’ and ‘flag’ together in format

При проверке списка аргументов вызова printf, scanf и т.п. компилятор обнаружил в строке форматирования сразу флаг и ‘*‘.

use of C99 long long integer constants

Целая константа типа long long не может быть объявлена в ISO C89.

Указанное имя запрещено с указанной спецификацией преобразования в формате указанной функции.

use of ‘length‘ length modifier with ‘type‘ type character

.

и т.п. компилятор

При проверке списка аргументов вызова printf, scanf

обнаружил, что указанная длина неправильно используетсяA

с указанным типом.

name‘ used but never defined

Указанная функция используется, но нигде не определена.

name‘ used with ‘spec‘ ‘function‘ format

Wilson

useless keyword or type name n empty declaration

Пустое объявление содержит неиспользуемое ключевое слово или название типа.

V

__VA_ARGS__ can only appearby in the expansion of a C99 variadic macro

Предопределенный макрос __VA_ARGS должен использоваться только в заменяемой части макроопределения, использующего произвольное число параметров.

valueTranslatedcomputed is not used

Вычисленное значение не используется. variable ‘name‘ clar d ‘inline’

Ключевое слов inline должно использоваться только с функциями. variable ‘%s’ might be clobbered by ‘longjmp’ or ‘vfork’

Автоматическая переменная не определенная как volatile может быть изменена вызовом ongjmp. Это предупреждение возможно только при компиляции с оптимизацией.

volatile register variables don’t work as you might wish

Передача переменной в качестве аргумента может привести к передаче ее через регистр (w0-w7) отличный от того, что был определен (если не w0-w7) для передачи. Или компилятор может сгенерировать команду, которая не работает с данным регистром и может потребоваться временное перемещение значения в другое место. Это предупреждение выдается, если используемый регистр модифицируется асинхронно (т.е. посредством ISR).

W

-Wformat-extra-args ignored without -Wformat

Опция -Wformat должна быть задана, чтобы использовать -Wformat-extra-args.

-Wformat-nonliteral ignored without -Wformat

Опция -Wformat должна быть задана, чтобы использовать -Wformat-nonliteral

-Wformat-security ignored without -Wformat

Опция -Wformat должна быть задана, чтобы использовать -Wformat-security.

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. C-39

16-битовый компилятор Си. Руководство

-Wformat-y2k ignored without -Wformat

Опция -Wformat должна быть задана, чтобы использовать -Wformat-y2k

-Wid-clash-LEN is no longer supported

Опция -Wid-clash-LEN больше не поддерживается.

-Wmissing-format-attribute ignored without -Wformat

Опция -Wformat должна быть задана, чтобы использовать

-Wmissing-format-attribute.

-Wuninitialized is not supported without -O

identifier ‘ was declared ‘extern’ and later ‘static’

Для использования опции -Wuninitialized должна. быть включена оптимизация.

Указанный идентификатор был ранее объявлен как extern, а теперь объявляется

как static.

Wilson

A

d later ‘static’

identifier ‘ was declared implicitly ‘exter ‘ a

Указанный идентификатор был ранее неявно объявлен как extern, а теперь объявляется как static.

identifier ‘ was previously implicitly declared to return ‘int’

Это несоответствие с предыдущим неявным объявлением указанного идентификатора.

identifier ‘ was used with no declaration before its definition

При компиляции с опцией командной строки -Wmissing-declarations

компилятор гарантирует, что функция будет объявлена перед определением. В by

данном случае встретилось определение функции без предварительного объявления.

identifier ‘ was used with no prototype before its definition

При компиляции с опцией командной строки -Wmissing-prototypes компилятор гарантирует,Translatedчто прототипы будут заданы для всех функций. В данном случае

встретился вызов функции без предварительного прототипа вызываемой функции. writing into constant object (arg n)

При проверке списка аргументов вызова printf, scanf и т.п. компилятор обнаружил, что аргумент с указанным номером является константным объектом, для которого спецификатор формата требует записи в него.

Z

zero-length identifier format string

При проверке списка аргументов вызова printf, scanf и т.п. компилятор обнаружил пустую строку форматирования («»).

DS51284H(ru) стр. C-40

© 2008 Microchip Technology Inc.

Соседние файлы в папке Микропроцессорная техника Сторожок

  • #

    20.02.20161.22 Кб20dig filtr.c

  • #

    20.02.20164.68 Кб20digital_filtr.X.production.hex

  • #
  • #
  • #

    20.02.20162.48 Кб21main.c

  • #
  • #

    20.02.2016830 б19pic33_rs_1.c

  • #

    20.02.20164.38 Кб23pic33_TM_RS.X.production.hex

  • #

    20.02.201693.68 Кб23RC Filtr.DSN

  • #

    20.02.20164.27 Кб20RC Filtr.pdsprj.GERONT-PC.anton_000.workspace

  • #

    20.02.20161.29 Кб19RC Filtr.pdsprj.MICROSOF-53D8EF.Admin.workspace

Мне нужно прочитать неизвестное количество различных чисел на входе пользователя с помощью функции scanf. Это просто означает, что количество различных целых чисел определяется пользователем, отправляя как можно больше чисел. Обратите внимание, что я читаю непосредственно числа (я должен), как указано в следующем коде:

int main(void)
{
    int numbers[];
    int error = 0;

    int i = 0;
    while(scanf("%i", &numbers[i++]) == 1);

    for(int i = 0; i < sizeof(numbers) - 1; ++i) {
        if(numbers[i] < -10000 || numbers[i] > 10000)
        {
            printf("%i%s", numbers[i], ", ");
        }
        else
        {
            printf("%s", "bbnError: Error: Vstup je mimo interval!n");
            // Means "Input is out of range!".
            // We have to write exact output to terminal as stated in HW.
            i = sizeof(numbers);
            error = 1;
        }
    }

    ...
}

int error на самом деле является логическим значением, но мне лень реализовывать логическую библиотеку, поэтому я определяю его как целое число: D

Однако проблема в другом. Компилятор выдает ошибку:

main.c:7:9: error: array size missing in ‘numbers’
     int numbers[];
                ^

Похоже, этой программе на C нужно знать размер массива, который можно выделить. Я уже просмотрел некоторые коды, которыми там поделились другие, чтобы узнать основы, которые мне нужно реализовать, и, ища проблему с размером массива, я нашел этот вопрос:

C — Объявление массива с неопределенным значением

Однако это не решает проблемы с неизвестным размером массива при прямом вводе неизвестного количества чисел. Я не нашел, что именно нужно решать. Я попытался определить максимальный размер массива для хранения до 999 чисел, но затем компилятор выдает мне это исключение:

main.c:50:23: error: iteration 999u invokes undefined behavior [-Werror=aggressive-loop-optimizations]
             if(numbers[j] > 0)
                       ^
main.c:48:9: note: containing loop
         for(int j = 0; j < sizeof(numbers); ++j)
         ^

То же самое для каждого цикла, используемого для статистики чисел (общая сумма, максимум, минимум, шансы, равные, положительные, отрицательные, их процентное и среднее значение). Это означает, что размер массива строго равен 999 числам, а остальные числа являются нулями. Я обнаружил функцию malloc, но не понимаю, как она используется :(

3 ответа

Лучший ответ

«Мне нужно прочитать неизвестное количество различных чисел при вводе пользователем с помощью функции scanf». это плохая цель дизайна.

Любая программа, которая позволяет внешнему интерфейсу вводить любой объем ввода без ограничений, является хакерским эксплойтом.

Надежный код ограничивает ввод пользователя большим, но разумным объемом ввода. Хороший код кодирует эту верхнюю границу как константу или макрос.

Использование scanf() — не лучший инструмент для чтения пользовательского ввода.
Рекомендую fgets() прочитать строку . (Здесь не показано.)

#include <stdio.h>
#include <ctype.h>

// find the next character without consuming it.
int peek_ch(void) {
  unsigned char ch;
  if (scanf("%c", &ch) == 1) {
    ungetc(ch, stdin);
    return ch;
  }
  return EOF;
}

#define INPUT_N 1000
void foo(void) {
  int input[INPUT_N];
  size_t n = 0;

  // Read 1 _line_ of input using `scanf("%d", ....)` to read one `int` at a time
  for (n = 0; n < INPUT_N; n++) {
    int ch;
    while (((ch = peek_ch()) != 'n') && isspace(ch))
      ;
    // %d consume leading white-space including n, hence the above code to find it.
    if (scanf("%d", &input[n]) != 1) {
      break;
    }
  }

  // TBD: Add code to handle case when n == N

  for (size_t i = 0; i < n; i++) {
    printf("%zu: %dn", i, input[i]);
  }
}


1

chux — Reinstate Monica
22 Окт 2016 в 19:53

Основываясь на вашем описании в комментариях, вам придется динамически выделять память с помощью malloc и при необходимости расширять ее с помощью realloc.

Вот базовый скелет примера:

#define INITIAL_SIZE 1024

#include <stdlib.h>
#include <stdio.h>

int main( void )
{
  size_t arraySize = 0;
  size_t i = 0;

  // initially allocate numbers array
  int *numbers = malloc( sizeof *numbers * INITIAL_SIZE );
  if ( !numbers )
  {
    fprintf( stderr, "Error allocating memory...exitingn" );
    exit( EXIT_FAILURE );
  }

  arraySize = INITIAL_SIZE;
  int input;
  while ( scanf( "%d", &input ) == 1 )
  { 
    if ( i == arraySize )
    {
      // double the size of the numbers array
      int *tmp = realloc( numbers, sizeof *numbers * (2 * arraySize) );
      if ( !tmp )
      {
        fprintf( stderr, "Could not extend array size...no more inputs allowedn" );
        break;
      }
      numbers = tmp;
      arraySize *= 2;
    }
    numbers[i++] = input;
  }

  // process numbers
  ...
  // clean up after ourselves
  free( numbers );


0

John Bode
22 Окт 2016 в 20:49

Спасибо всем за вашу помощь, я очень ценю это. Это помогло мне, хотя на самом деле мне было нужно не это одно решение, а немного другое. Как указано в комментарии выше, мне нужно было только выполнить требования к вводу и выводу домашнего задания. Я связался со своим профессором, и он предложил мне избавиться от целочисленного массива и заключить вывод списка исходных чисел и весь прогресс вычислений в цикл while. Окончательный расчет для процентного и среднего суммирования затем завершается проверкой условий if, если ошибка не произошла, завершается со всем окончательным выводом. Это, однако, не будет отмечаться как решающий ответ, поскольку здесь мне это очень помогло. Но я отметил, что ответ от chux очень логичен и любая программа должна быть защищена от вредоносных программ путем переполнения буфера. Еще раз спасибо всем за вашу помощь, я очень ценю это :)


0

Polda18
22 Окт 2016 в 21:24

C Programming for Beginners : Length of an Array

Length of an Array

It helps us write the if-else statement in just one line ✌️

Traditional if-else Statement Syntax

if-else Statement with Ternary Operator

Example

Let’s just say we want to compare two numbers and print the number which is the greater one.

Now, we could do the same thing within just one line like this :

Or if you wanted to print it rather than returning it, write like this :

This looks so cool 😃

Let’s now implement this into an actual program.

Sizes

Each of the data types consumes a particular set of memory. For example, the int data has a size of 4 bytes of memory.

We can print the size of each of each of the data types by using the sizeof() function.

There is also a specific range of values for each data type.

(This can be vary for different compilers)

Details are listed below in the program in form of comments.

Length of an Array

We know that char type takes 1 byte of memory.

Let’s try a string array.

It gave us an error saying the array size is missing.

Let’s set the size this time.

So we get to choose the size of an array.

Let’s store a string of 3 letters within this array and check whether it prints 3 of 5.

Lets store another string. But this time we won’t specify the size within those brackets.

It gives 4. But it should give 3 right ?
Don’t worry. We can use this feature ✌️

Moral of the story : The size of array depends on the number within those squared brackets or the value stored within it.

So the size is done. Now what about the length ?

The length of the above the above is 4(cuz there are three letters). And the size is 4 too.

For a string array, the length is same as the array size. But can be different for other types of arrays. For example an integer array.

But wait what’s an integer array ?

Like a string array is a set of chars; an int array is a set of integers.
The set is created with curly brackets.

Note : Do not forget to specify the data type of the array as int.

We can see the length of this array is 3 as it has three numbers.

But is the size same ?

No. The size is 12 because each integers holds 4 bytes and there are 3 integers.
So 4 times 3 is 12.

In case of string array, the size was the same the length because the string is a set of chars. And a char takes 1 byte of memory.

So how can we print the length of the integer array ?

Simple! We divide the size of array (12) with the size of first element (4). So we get three.

The size of the first element of the array is 4 cuz it is an integer type.

This is how we can get access to the elements of the array.

Источник

Ошибка размеров массива в C [дубликат]

Я написал программу для выполнения следующих задач: сначала получить строку от пользователя и вычислить ее размер с помощью функции sizeof(). Вот мой код:

Ошибка компиляции: error: array size missing in ‘U1’ Почему ? Объясните, пожалуйста, что здесь не так?

задан 17 сен ’13, 13:09

вам нужно выделить память для массива символов. — Bill

5 ответы

Вам нужно определить размер массива, чтобы сообщить компилятору, сколько места нужно выделить:

Если вы не знаете размер своего массива во время компиляции, вы можете динамически выделить память, используя malloc :

Внимание

всегда будет печатать 256, так как sizeof возвращает размер массива, вычтенный во время компиляции, а не количество символов, только что считанных в массив. Вы могли бы использовать sizeof(char) * (strlen(U1) + 1) для вычисления количества байтов, требуемых строкой (+1 происходит от символа NUL-терминатора в конце строки).

Массивы C имеют фиксированную длину, поэтому размер каждого массива должен быть полностью указан при его объявлении. Правильное объявление выглядит примерно так:

Обратите внимание, что если пользователь вводит больше указанного количества символов (минус один для завершающего нуля), поведение этой программы не определено. Чтобы избежать этой проблемы, замените scanf(«%s») с fgets() и узнать о динамические массивы.

ответ дан 23 мая ’17, 12:05

Нет, если вы введете 257-байтовую строку, она будет переполнена. Я прав ? Как я могу предотвратить это? — InJecTable

@InJecTable Даже если вы введете 256-байтовую строку, она переполнит массив, потому что строки C заканчиваются нулевым символом. Чтобы этого избежать, замените один scanf с несколькими звонками в fgets и используйте динамически выделяемый массив, как указано в ответе. — user4815162342

Массивы в C должны быть объявлены с указанием размера. Другой вариант — использовать динамические массивы, которые являются указателями.

Источник

Что означает ошибка RangeError: Array size is not a small enough positive integer

Когда попытался создать слишком большой массив

Ситуация. К разработчику одной федеральной торговой сети поступила такая задача: собрать и предварительно обработать все покупки за месяц со всех магазинов по всей стране. Разработчик выяснил стандартный среднемесячный объём данных, количество магазинов, сколько касс в магазине и количество смен.

Для обработки данных разработчик создаёт пустой массив, но хочет заранее указать, сколько элементов будет в массиве. Для этого он получает общее значение данных для обработки и объявляет новую переменную с массивом:

Но при запуске код выдаёт ошибку:

❌ RangeError: Array size is not a small enough positive integer

Видно, что код ругается на размер массива, но не ругается на результат умножения — но почему?

Что это значит: компьютер не смог создать массив с таким большим количеством элементов и попросил уменьшить их количество.

Когда встречается: когда мы пытаемся создать массив, где элементов больше, чем 2 32 − 1 = 4 294 967 295. Такое ограничение на размер массива появилось в 2009 году из-за внутренней команды ToUint32() — она переводит числа в 32-битный формат без использования отрицательных чисел. Максимальное число, которое попадает в этот диапазон, — 4 294 967 295.

Что делать с ошибкой RangeError: Array size is not a small enough positive integer

Решить эту ошибку можно двумя способами: указав безопасное количество элементов вручную или проверив его перед созданием массива.

В первом случае всё просто: мы создаём новый массив и сразу указываем максимальное количество элементов:

var data = new Array(4294967295);

Во втором — проверяем допустимый размер перед созданием:

Но почему компьютер не ругался на промежуточный результат?

Когда мы перемножили числа и положили результат в переменную total, к нему применялись совсем другие требования, в том числе и на максимальный размер числа — 2 1024 − 1. Это в 32 раза больше, чем максимально возможное количество элементов массива.

Получается, что очень большую переменную мы посчитать можем, а использовать её для создания массива — нет. А если интересно, как можно работать в JavaScript с очень большими числами, — почитайте, как мы научили компьютер складывать в столбик.

Источник

Сообщения об ошибках Сообщения об ошибках периода компиляции

«,» expected (Нужно указать «,»).

Array bounds missing «]» (Массив ограничивает отсутствие «]»).

Array must have at least one element (Массив должен иметь по крайней мере один элемент).

Call of nonfunction (Нефункциональное обращение).

Call to function ‘function’ with no prototype (Обращение к функции «функция» без прототипа).

Code has no effect (Код не имеет эффекта).

Compound statement missing «>» (Утверждение, пропускающее «>»).

Declaration is not allowed here (Здесь не допускается объявление).

Declaration missing «;» (Отсутствие объявления «;»).

Declaration syntax error (Синтаксическая ошибка, объявление переменной).

Declaration terminated incorrectly (Объявления, завершенные неправильно).

Delete array size missing «]» (Отсутствие скобки «]»).

do-while statement missing ;OR For statement missing ; (Отсутствие утверждения do-while, или отсутствие утверждения For).

Expression syntax (Ошибка синтаксиса в выражении).

Extra parameter in call to function (Недопустимый параметр в обращении к функции).

Function call missing «)» (В обращении к функции отсутствует «)»).

Illegal initialization (Неверная инициализация).

Illegal character ‘character’ (Неверный символ » символ «).

Illegal structure operation (Неверная операция структуры).

Illegal use of pointer (Неверное использование указателя).

‘identifier’ cannot start a parameter declaration (Идентификатор не может начать объявление параметра).

identifier is assigned a value which is never used (Идентификатор определяет значение, которое ранее не использовалось).

Invalid indirection (Недопустимый ссылка).

Lvalue required (Требуется наименование выражения (адрес переменной)).

Member identifier expected (Ожидается значение идентификатора).

Multiple declaration for ‘identifier’ (Многократные объявления для идентификатора).

Must take address of a memory location (Необходимо взять адрес расположения памяти).

Non-portable pointer conversion (Преобразования указателя не переносятся).

Not an allowed type (Недопустимый тип).

Operator «[]» missing «]» (Оператор «[]» не имеет «]»).

Overlays only supported in medium, large, and huge memory models (Оверлейные программы, поддерживаемые только в среде, большие и огромные модели памяти).

Parameter parameter is never used (Параметр «параметр» ранее никогда не использовался).

Size of ‘identifier’ is unknown or zero (Размер идентификатора неизвестен или нуль).

Structure required on left side of . or .* (Ошибка структуры на левой стороне, или отсутствие «*»).

Two consecutive dots (Наличие двух последовательных точек).

Too few parameters in call to ‘function’ (Несколько параметров в обращении к «функции»).

Too many initializers (Слишком много инициализаторов).

Too many error or warning messages (Слишком много ошибок или предупреждений).

Type mismatch in parameter parameter in call to function (Несоответствие типов в параметре «параметр» при обращении к «функции»).

Type mismatch in redeclaration of identifier (Несоответствия типов в повторном определении идентификатора).

Value of type void is not allowed (Недопустимые значения типа).

Variable identifier is initialized more than once (Идентификатор переменной инициализирован более одного раза).

Unable to open include file ‘filename’ (Невозможно открыть файл).

Undefined structure ‘structure’ (Неопределенная структура «структура»).

Undefined symbol ‘identifier’ (Неопределенный символ идентификатора).

Undefined symbol symbol in module module (Неопределенный символ «символ» в модуле «модуль»).

Unknown preprocessor directive: ‘identifier (Неизвестны директивы препроцессора: идентификатора).

Wrong number of arguments in call of macro macro (Неправильное число параметров в обращении макрокоманды » макрокоманда «).

Источник

Как сделать двумерный массив указанного пользователем значения?

Как бы я объявил двумерный массив размером n на n, который дает пользователь?
Например, почему это работает:

но это не будет

Возможно ли иметь двумерный массив размера строки и столбца n или вам придется использовать вектор?
Спасибо!

Решение

Сделайте это с вектором, вот так:

Также есть std::valarray шаблон которая аналогична функциональности std::vector , но имеет интересную дополнительную функциональность, которая может быть полезна в случае матрицы.

Другие решения

Чтобы создать многомерный массив, вам нужно написать так:

И не забудьте удалить его:

Но текущая лучшая практика c ++ — никогда не выделять или освобождать память в коде приложения, то есть вы должны использовать std::vector или некоторый другой контейнерный класс.

Этот ответ отличается в двух пунктах от большинства других ответов:

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

Общий подход использует один линейный блок памяти и сохранение элементов строки после строки или столбца после столбца (Строка или порядок столбцов ). Давайте немного обобщим и скажем, что вы хотите получить двумерное количество типа T с экстентами N0 а также N1 , Тогда вы можете получить необходимую память

Использование вектора вместо необработанного указателя имеет несколько преимуществ. Например, вы не можете забыть освободить память, потому что деконструктор заботится об этом автоматически (RAII идиома ). Другое преимущество заключается в том, что указанный выше конструктор заполняет вектор копиями, созданными по умолчанию. T (вместо того, чтобы оставить память неинициализированной).

Далее вы можете получить доступ к линейной памяти с помощью vector «s член operator[] (или функция-член at если вы хотите, связанные чеки). Вы, вероятно, хотите использовать два индекса n0 а также n1 в промежутках [ 0 , N0 ) а также [ 0 , N1 ), но память является линейной и требует одного индекса. Следовательно, вы можете ввести вспомогательную функцию index чтобы получить доступ к вашему 2D количеству, как, скажем,

Чтобы представить, как это может работать, рассмотрим матрицу 3 на 2. В данном линейном блоке памяти вы можете расположить элементы следующим образом:

В таком случае вы бы написали

В общем для d размеры у вас есть (псевдокод)

где выражения в скобках также называются смолы.

Если вы поместите всю эту логику в класс, она станет очень простой в использовании. Вот пример для вдохновения (онлайн демо с N = 4 ):

Можно создать двумерный массив без использования векторов, как показано ниже. Это будет работать для всех типов.

Но проблема заключается в управлении памятью, так как это грубый подход.

Вместо этого мы можем использовать векторы, которые можно

Источник

  • Accueil
  • Forum
  • C et C++
  • C
  • D�buter
  • error: array size missing

 C

Sujet :

C

  1. 18/06/2021, 23h06


    #1

    binco est d�connect�


    Membre habitu�



    Par d�faut error: array size missing

    Bonjour,

    Comment d�clarer ce tableau

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18

    #include<stdio.h>
     
    int main(int argc, char const *argv[])
    {
        int x=1, i=0, nombre_element_lu;
        int tableau_notes [];
     
        printf("saisisez une liste de notes (-1 pour fin): n");
        while (x>=0)
        {
            scanf("%f", &x);
            tableau_notes[i++]=x;
        }
     
        nombre_element_lu=--i;
     
        return 0;
    }

    message d’erreur

    1
    2

    error: array size missing in 'tableau_notes'
         int tableau_notes [];


  2. 18/06/2021, 23h12


    #2


  3. 19/06/2021, 11h07


    #3


    Par d�faut

    Bonjour

    Citation Envoy� par binco
    Voir le message

    H� oui, un tableau doit avoir une taille concr�te. Donc soit tu �cris int tableau_notes[]={…, …, …, …} et le compilateur «comptera» combien d’�l�ments se trouvent entre les accolades et rajoutera ce nombre dans les crochets, soit tu �cris int tableau_notes[n] «n» �tant un nombre strictement sup�rieur � 0 et pas trop gros pour ne pas exploser ta pile (la zone m�moire dans laquelle se trouvent tes variables).

    Concernant ton programme, ton while (x >= 0) est dangereux car �a ne limite absolument pas le nombre de notes. Imaginons que tu aies int tableau_notes[5] et que l’utilisateurs saisisse 1, 8, 4, 7, 12, 18. A chaque saisie x est sup�rieur � 0 donc la note saisie va dans le tableau de notes. Sauf qu’il y a 6 notes tandis que ton tableau et limit� � 5 => UB
    Il te faut trouver un test qui emp�che quoi qu’il arrive de faire saisir plus de notes que ce que le tableau peut en contenir. Sans compter que d’un point de vue math�matique, une note � 0 est tout � fait possible mais interdite par ton algo.

    Et ta variable «i» ne sert � rien (tu utiliserais «nombre_element_lu» � la place le programme marcherait pareil). Mais si tu veux quand-m�me utiliser «i», alors la ligne nombre_element_lu=—i est mauvaise car elle force «i» � changer (donc d�cr�ment et affectation alors que «i» n’est plus utilis� ensuite donc tu affectes une valeur � une variable que tu n’utlises plus). L’instruction ad�quate serait nombre_element_lu=i-1.


  4. 30/06/2021, 22h21


    #4


+ R�pondre � la discussion

Cette discussion est r�solue.

  • Accueil
  • Forum
  • C et C++
  • C
  • D�buter
  • error: array size missing

Discussions similaires

  1. R�ponses: 3

    Dernier message: 14/04/2013, 23h31

  2. R�ponses: 5

    Dernier message: 14/09/2010, 23h27

  3. R�ponses: 1

    Dernier message: 03/05/2009, 22h43

  4. R�ponses: 7

    Dernier message: 02/03/2009, 09h35

  5. R�ponses: 5

    Dernier message: 12/02/2009, 15h36

Partager

Partager

Понравилась статья? Поделить с друзьями:
  • Error array required but string found
  • Error bad system config info windows 10
  • Error array must be initialized with a brace enclosed initializer
  • Error array index out of range
  • Error bad source address