| description | title | ms.date | f1_keywords | helpviewer_keywords | ms.assetid |
|---|---|---|---|---|---|
|
Learn more about: Compiler Warning (level 1 and level 4) C4700 |
Compiler Warning (level 1 and level 4) C4700 |
08/30/2022 |
C4700 |
C4700 |
2da0deb4-77dd-4b05-98d3-b78d74ac4ca7 |
uninitialized local variable ‘name‘ used
Remarks
The local variable name has been used, that is, read from, before it has been assigned a value. In C and C++, local variables aren’t initialized by default. Uninitialized variables can contain any value, and their use leads to undefined behavior. Warning C4700 almost always indicates a bug that can cause unpredictable results or crashes in your program.
To fix this issue, you can initialize local variables when they’re declared, or assign a value to them before they’re used. A function can be used to initialize a variable that’s passed as a reference parameter, or when its address is passed as a pointer parameter.
The /sdl (Enable Additional Security Checks) compiler option elevates this warning to an error.
Example
This sample generates C4700 when variables t, u, and v are used before they’re initialized, and shows the kind of garbage value that can result. Variables x, y, and z don’t cause the warning, because they’re initialized before use:
// c4700.cpp // compile by using: cl /EHsc /W4 c4700.cpp #include <iostream> // function takes an int reference to initialize void initialize(int& i) { i = 21; } int main() { int s, t, u, v; // Danger, uninitialized variables s = t + u + v; // C4700: t, u, v used before initialization std::cout << "Value in s: " << s << std::endl; int w, x; // Danger, uninitialized variables initialize(x); // fix: call function to init x before use int y{10}; // fix: initialize y, z when declared int z{11}; // This C++11 syntax is recommended over int z = 11; w = x + y + z; // Okay, all values initialized before use std::cout << "Value in w: " << w << std::endl; }
When this code is run, t, u, and v are uninitialized, and the output for s is unpredictable:
Value in s: 37816963
Value in w: 42
Не могу запустить рабочий проект под Visual Studio 2013 из-за этой ошибки. Проект старый, делался еще под Visual Studio 6.0. Видимо, там выдавалось предупреждение вместо ошибки.
Переменных много. Может быть, все-таки можно обойти эту ошибку, не инициализируя их все?
![]()
Arhadthedev
11.4k8 золотых знаков39 серебряных знаков69 бронзовых знаков
задан 2 фев 2015 в 21:10
В свойствах проекта — свойства конфигурации — С/С++ — создание кода — проверка безопасности — Отключить проверку безопасности (/GS-)
ответ дан 2 фев 2015 в 21:34
nezzonezzo
1021 золотой знак2 серебряных знака8 бронзовых знаков
My issue is i am getting error C4700: uninitialized local variable ‘response’ used on line 26. I know it’s probably something simple I’m completely missing please help.
The local Driver’s License Office has asked you to write a program which grades the written portion of the driver’s license exam. The exam has 20 multiple choice questions. The correct answers are:
1. A 2. D 3. B 4. B 5. C 6. B 7. A 8. B 9. C 10. D 11. A 12. C 13. D 14. B 15. D 16. C 17. C 18. A 19. D 20. B
In main, declare an array and initialize it with the above correct answers. Also declare a second array for an exam taker’s answers, and get a text file name from the user.
1) have the user enter 20 answers from an exam taker and write the answers to the text file (validate that the answers are A, B, C, or D). See the 20 exam taker’s answers below.
Hint: open (and close) the file in the function.
2) read the text file of the exam taker’s answers and store them in the exam taker’s array, which was declared in main.
-a list of the numbers of the questions answered incorrectly (question numbers are 1-20).
Arrays must be processed using loops.
|
|