相关疑难解决方法(0)


具有名为main的全局变量而不是main函数的程序如何工作?

考虑以下计划:

#include <iostream>
int main = ( std::cout << "C++ is excellent!\n", 195 ); 
Run Code Online (Sandbox Code Playgroud)

在Windows 7操作系统上使用g ++ 4.8.1(mingw64),程序编译并运行正常,打印:

C++非常棒!

到控制台.main似乎是一个全局变量而不是一个函数; 如果没有该功能,该程序如何执行main()?这段代码是否符合C++标准?程序的行为是否定义明确?我也使用了该-pedantic-errors选项,但该程序仍然编译并运行.

c++ program-entry-point language-lawyer

97
推荐指数
5
解决办法
9849
查看次数

在C或C++链接器中是否有任何类型检查?

我正确地说连接器没有进行功能参数检查.它们不检查函数调用的数量或类型,也不检查全局数据引用的类型.所有连接体都是如此吗?

我在x86-64上使用Clang瞄准Linux.链接器是否检查引用是否在正确的段中?或者就链接器而言,外部引用实际上只是一个void*?

我来自高级语言背景C#和Scala,所以对于那些沉浸在低级别世界中的人来说,这似乎是显而易见的.我在汇编程序中编写了几个函数(系统调用),我注意到汇编程序中没有外部函数的参数原型.

上下文:我实际上是在编写一个编译器.目前我的目标是使用汇编程序函数进行系统调用的预处理C .i文件,但替代方案是C++,汇编程序甚至是机器代码,所以我试图权衡成本和收益,特别是类型检查.汇编器/编译器/ 链接器我可以用来检查我自己的程序及其函数原型生成的正确性.

c c++ x86-64 clang

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

为什么写主要; 在C中给出一个段错误

以下是我的demo.c文件:

main;
Run Code Online (Sandbox Code Playgroud)

在编译这个gcc时会发出警告:

demo.c:1:1:警告:数据定义没有类型或存储类[默认启用]

运行./a.out会出现分段错误:

分段故障(核心转储)

是因为,(1)main没有在任何地方定义,我们正在尝试执行它;(2)我们在任何函数之外使用命令语句,因此它无法执行.

在任何一种情况下,我仍然不明白为什么它应该抛出一个段错误.

更新:它可能看起来类似于Is'int main;' 一个有效的C/C++程序?,但这是不同的,因为不使用任何标识符,编译代码.

c segmentation-fault

-2
推荐指数
1
解决办法
90
查看次数