C/C++编译报错printf was not declared in this scope问题及解决
作者:Summer丶snow
这篇文章主要介绍了C/C++编译报错printf was not declared in this scope问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
C C++编译报错printf was not declared in this scope
原因是这个 printf 函数需要头文件 "stdio",但是程序中没写,解决办法是在头文件中加入此头文件。
C语言加入
#include<stdio.h>
C++加入
#include<cstdio>
C C++常见编译错误提示释义
1.iteration 16 invokes undefined behavior**
常见于对数组的操作,数组溢出错误。
数组定义为20个字节,而for循环判断条件应为<20
uint8_t oldrelay[20] = { 0U }; for ( i = INDUCTOR_160nH; i <= 20; i++ ) { oldrelay[ i ] = SET; relay[ i ] = RESET; }
2.warning: excess elements in array initializer**
数组元素比定义元素多
3.passing argument 1 of ‘sprintf’ discards ‘volatile’ qualifier from pointer target type**
加上强制转换
volatile uint8_t str[10]; sprintf((char*)str,“0”);
4.in expansion of macro
宏定义错误
在头文件中避免短宏定义,容易重复;例如
//#define SIZE 24 prop_name 参数为 SIZE LV_STYLE_##prop_name
预编译为 LV_STYLE_24 出错
C C++编译错误整理
面这些是我自己在学习工作遇到的编译问题,以及可行的解决办法,整理一下,也方便自己及时查阅 ︿( ̄︶ ̄)︿︿( ̄︶ ̄)︿︿( ̄︶ ̄)︿
1.VC打开已存在的工程提示错误 C1083:缺少 *.pch
问题解决:
Project->c/c++,然后点击Category的下拉框,选择Precompiled Headers,
接着选择第二项,Automatic use of precompiled headers , 编辑框里填 *.h ,这样做的前提是你的 *.h 和 *.cpp 都已存在。
问题就解决了。
2.VS打开已存在工程,出现 error MSB3073
英文版处理办法:
- Project->Configuration Properties->General->Target Extension设置为.ocx 或者.dll
- Project->Configuration Properties->Linkerl->General ->Output File设置为$(OutDir)$(ProjectName)$(TargetExt)
中文版处理办法:
- 在项目上点右键,选择“属性”->“配置属性”->“常规”->“目标文件扩展名”,设置为.ocx 或者.dll
- 在项目上点右键,选择“属性”->“配置属性”->“链接器”->“ 常规 ”->“输出文件”,设置为$(OutDir)$(ProjectName)$(TargetExt)
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。