main.c文件不存在

main.c文件不存在,第1张

main.c文件不存在是因为文件格式不对。根据查询main.c文件的相关资料得知,出现main.c文件不存在的原因为:

1、书写标识符时,忽略了大小写字母的区别。

2、忽略了变量的类型,进行了不合法的运算。

3、将字梁培符常量与字符串常量混淆。

4、忘记加分号。分号是C语句中不可缺少的一部分,语句末尾必须有分号

。5、多加分号。

6、输入变量时忘记加衡渣好地址运算符&。

7、、输入数据的方式与要咐铅求不符。

8、输入字符的格式与要求不一致。

我只有C语言的代码。主要功能是main.c,它包括其他c文件,如#include "Flash.h"。

我想让项目继续工作,但可以添加一个cpp文件。

有人告诉我,我必须把主管道换成

main.cpp

这将在编译时产生250个错误-关于包含的c文件

将主文件转换为cpp并逗码悔仍然包含C文件的正确方法是什么?

主.cpp:

#include "Flash.h"

int main(void)

{

....

}

我读过的How to use C source files in a C++ project?并没有直接解决这个问题(我的编译器无论如何都会使用c++)。

编辑:

在有人因为问我而杀了我之前(不知道你为什么这么咄咄逼人),我只得到3种错误250次:

'->' cannot appear in a constant-expression

'&' cannot appear in a constant-expression

a cast to a type other than an integral or enumeration type cannot appear in a constant-expression

编辑2:

下面是一些代码行(对某些射频芯片使用SDK运行):

大部分错误都来自这一部分

typedef enum /*lint -save -e30 -esym(628,__INTADDR__) */

{

NRF_GPIOTE_TASKS_OUT_0 = offsetof(NRF_GPIOTE_Type, TASKS_OUT[0]), /**<Out task 0.*/

NRF_GPIOTE_TASKS_OUT_1 = offsetof(NRF_GPIOTE_Type, TASKS_OUT[1]), /**<Out task 1.*/

NRF_GPIOTE_TASKS_OUT_2 = offsetof(NRF_GPIOTE_Type, TASKS_OUT[2]), /**<Out task 2.*/

NRF_GPIOTE_TASKS_OUT_3 = offsetof(NRF_GPIOTE_Type, TASKS_OUT[3]), /**<Out task 3.*/

#if (GPIOTE_CH_NUM >4) || defined(__SDK_DOXYGEN__)

NRF_GPIOTE_TASKS_OUT_4 = offsetof(NRF_GPIOTE_Type, TASKS_OUT[4]), /**<Out task 4.*/

NRF_GPIOTE_TASKS_OUT_5 = offsetof(NRF_GPIOTE_Type, TASKS_OUT[5]), /**<Out task 5.*/

NRF_GPIOTE_TASKS_OUT_6 = offsetof(NRF_GPIOTE_Type, TASKS_OUT[6]), /**<Out task 6.*/

NRF_GPIOTE_TASKS_OUT_7 = offsetof(NRF_GPIOTE_Type, TASKS_OUT[7]), /**<Out task 7.*/

在这些行上重复相同的错误:

a cast to a type other than an integral or enumeration type cannot appear in a constant-expression

最佳答案

C++中的#include指令是源代码的文字包含。想象一下,在Flash.h中包含的中的C源代码做了与C++类似的不兼容的事情。

typedef int class

现在,在您的main.c中

#include "Flash.h"

就好像你在C++源文件中直接有了这个代码main.cpp——所以这是一个错误。

如果你有模枝C标题的C源代码,山正你根本不需要使用C++!

如果您想编写新的C++代码并使其调用旧代码(反之亦然),只需使用链接器即可。C++代码包括C++头文件,C代码包括C标头,链接器将把所有代码组合成一个可执行文件。

为了使C和C++部件一起工作,需要一个附加的头文件。例如,将其称为typedef int class。然后将它包含在所有的C和C++源文件中:

#include "c-cpp-interface.h" // in C files

extern "C" {

#include "c-cpp-interface.h" // in C++ files

}

这个文件应该用普通的C/C++子集语言编写。也就是说,大多数情况下是C语言,但是类型安全性提高了(例如,所有函数的原型必须完整地编写,没有隐含的c-cpp-interface.h参数)。

理想情况下,您现有的C头文件可以这样使用。然而,C头文件经常积累CRUFT,而创建一个新文件可能比清理现有文件更实用。

查看您所拥有的实际错误消息(使用...),您应该尽量在C-C++接口中拥有尽可能少的代码。不要把实现细节(比如各种常量的值)放在那里。只有其他语言调用的函数的声明/原型(C调用C++或反之亦然)。

一般来说头文件提供接档漏口,源判蠢轿文件提供实现

编译器掘肆规定源文件必须包含函数入口,即main函数。而头文件不得包含函数入口,头文件不可以单独编译成一个程序,仅仅包含程序片段或者定义常,变量。

头文件专为源代码调用而写的静态包含文件,可被源代码文件中#include编译预处理指令解释,如果将头文件完整,拷贝到源代码的指令处,从而编译时相当于在源代码中插入函数声明或者实现。

头文件和源文件

头文件就是.h文件,一般放类的声明,平时用的#include就是包含这种文件

源文件就是.cpp文件,一般用来放在头文件声明的类成员函数的具体实现。一般一个.h文件总会有一个同名的.cpp


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12202643.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存