相关疑难解决方法(0)

main()真的是一个C++程序的开始吗?

C++标准中的$ 3.6.1/1节,

程序应包含一个名为main的全局函数,它是程序的指定开始.

现在考虑这段代码,

int square(int i) { return i*i; }
int user_main()
{ 
    for ( int i = 0 ; i < 10 ; ++i )
           std::cout << square(i) << endl;
    return 0;
}
int main_ret= user_main();
int main() 
{
        return main_ret;
}
Run Code Online (Sandbox Code Playgroud)

此示例代码执行我打算执行的操作,即进入main()应该是程序"开始" 的函数之前打印从0到9的整数平方.

我还用-pedantic选项GCC 4.5.0 编译它.它没有错误,甚至没有警告!

所以我的问题是,

这段代码真的符合标准吗?

如果它符合标准,那么它是否会使标准所说的无效?main()不是这个计划的开始!user_main()在执行之前执行main().

我知道要初始化全局变量main_ret,use_main()首先执行,但这是完全不同的事情; 关键是,它确实使标准中的引用语句$ 3.6.1/1无效,因为main() …

c++ program-entry-point standards-compliance entry-point

130
推荐指数
6
解决办法
2万
查看次数

错误:预期声明

我正在用Visual C++编写代码来访问串口.

代码如下: -

#include<stdio.h>
#include<cstring>
#include<string.h>
#include<conio.h>
#include<iostream>
using namespace std;
//#include "stdafx.h"
#ifndef __CAPSTONE_CROSS_SERIAL_PORT__
#define __CAPSTONE_CROSS_SERIAL_PORT__
HANDLE hSerial= CreateFile(L"COM1", GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);

if(hSerial==INVALID_HANDLE_VALUE)
{
if(GetLastError()==ERROR_FILE_NOT_FOUND){
 //serial port does not exist. Inform user.
 }
 //some other error occurred. Inform user.
 }
Run Code Online (Sandbox Code Playgroud)

在上面的代码中我遇到错误,如果在行

if(hserial==INVALID_HANDLE_VALUE)
Run Code Online (Sandbox Code Playgroud)

错误如下: -

Error:expected a declaration
Run Code Online (Sandbox Code Playgroud)

我收到同样的错误,在两个大括号}在结束,如果语句

我想知道为什么我收到此错误以及如何解决它

visual-c++

7
推荐指数
1
解决办法
4万
查看次数

C++ 在主函数之外使用“cout”?

我不知道我是否只是使用了错误的关键字......但我在谷歌上找不到答案。我不能将我虚弱的头脑包裹在我的错误上。

这是错误的简单演示:

#include <iostream>

//std::cout << "hello";

int main()
{
    std::cout << "hello";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译/运行时,我收到此错误:

main.cpp:3:6: 错误:命名空间“std”中的“cout”未命名类型

但是,如果我删除第一cout行,并且只允许程序执行 main 函数中的那一行,它就可以正常工作。

有人有任何想法吗?

c++

1
推荐指数
1
解决办法
2023
查看次数

全局变量初始化

原则上,在调用main()之前初始化在任何函数外部定义的变量(即全局,名称空间和类静态变量).翻译单元中的这些非局部变量按其声明顺序初始化

以上是我的讲师给出的课堂笔记.

#include <iostream>

using namespace std;
int a=99;
int b;
int main(int argc, char *argv[]) 
{
  cout<<a<<endl;
  cout<<b<<endl;
  return 0;
}
b=100;
Run Code Online (Sandbox Code Playgroud)

我运行它时出错.在调用main()之前'b'分配给100是不是真的?错误是 C++ requires a type specifier for all declarations

c++

0
推荐指数
1
解决办法
9253
查看次数