您好我正在用c ++编写一个小项目,我希望有一些类可以完成一些工作,我编写了接口和类的实现.
令我惊讶的是,我没有一个没有main()的简单类,我想有一个曾经实例化的类,它的方法可以被调用,做的事情,但我不需要(也不想要)类实现中的main().这是我想要拥有的一个例子:
file.h:
class animal
{
public:
animal();
~animal();
public:
int method1(int arg1);
private:
int var1;
};
Run Code Online (Sandbox Code Playgroud)
file animal.cpp:
#include "animal.h"
animal::animal(){...}
animal::~animal(){...}
int animal::method1(int arg1){return var1;}
}
Run Code Online (Sandbox Code Playgroud)
我想将动物类称为另一个文件并让它工作,如下所示:file app.cpp:
#include <neededlib>
#include "animal.h"
int main()
{
animal dog;
cout << dog.method1(42);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是编译器给了我
/usr/lib/gcc/i686-pc-linux-gnu/4.3.3/../../../crt1.o: In function _start:
"(.text+0x18): undefined reference to `main`"
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
对于animal.cpp,但我不需要主,或者我需要它吗?
我哪里错了?
在C中,当主进程结束时 - 如何调用注册的任何函数atexit()?
我理解它是如何atexit()工作的,但我不理解"主进程结束"和"调用注册的任何函数"之间的通信.atexit()我有点多余.
谢谢!
这是我们如何覆盖java中的main函数....
public class animaltest
{
public static void main(String[] args)
{
horse h = new horse();
h.eat();
}
}
public class inheritmain extends animaltest
{
public static void main(String[] args)
{
System.out.print("main overrided");
}
}
Run Code Online (Sandbox Code Playgroud)
但重写主要的好处是什么?
我想从另一个类(用ObjectiveC编写)中调用C类主函数.我想将一些论点传递给主要论者.我试过这样,但frist参数被忽略了:
char *argv[] =
{
"--a",
"--b",
srcFile ,
destFile
};
my_c_main(4, argv);
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?
c parameters program-entry-point objective-c parameter-passing
我被要求打破一个C程序,这个程序最初只是一个主要的方法,有很多评论很好的段.如果发生错误,每个段都使用相同的定义函数字符串'die'.die函数使用goto标签'out'来关闭程序.
在将这些段中的每一个转换为函数之后,这些函数现在都是从底部的按比例缩小的main方法调用的,每个段的这个转出代码不再有效.'out'标签位于main中,XCode编译器告诉我goto标签尚未定义.
所以我想我问我如何以最有效的方式在每个本地函数中定义我的out标签?
以下是一些代码片段,所有代码片段都显示在它们的顺序/结构中:
模具定义
#define die(msg, ...) do { \
(void) fprintf (stderr, msg, ## __VA_ARGS__); \
(void) fprintf (stderr, "\n"); \
goto out; \
} while (0)
Run Code Online (Sandbox Code Playgroud)
使用die的函数示例
void createContext(void){
context = clCreateContext (0, 1, &device_id, NULL, NULL, &err);
if (!context || err != CL_SUCCESS)
die ("Error: Failed to create a compute context!");
}
Run Code Online (Sandbox Code Playgroud)
最后我的主要内容,其中包含最后的模具
main (int argc, char *argv[])
{
(Several functions called here)
out:
/* Shutdown and cleanup. */
if (data)
free (data);
if (results)
free …Run Code Online (Sandbox Code Playgroud) 我正在弄乱Eclipse上的JRE设置.最初项目设置为1.6,当设置为1.7时,我的程序开始显示很多错误.所以当我切换回1.6时,所有编译时错误都消失了,但我现在遇到了一个新问题.当我试图运行包含main函数的启动类时,这在控制台上显示..class文件都存在.请指教.
java.lang.UnsupportedClassVersionError: Demo : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Exception in thread "main"
Run Code Online (Sandbox Code Playgroud) 我得到这个代码:
#include<stdio.h>
#include<stdlib.h>
void main(void)
{
char *ptr = (char*)malloc(10);
if(NULL == ptr)
{
printf("\n Malloc failed \n");
return;
}
else
{
// Do some processing
free(ptr);
}
return;
}
Run Code Online (Sandbox Code Playgroud)
它在Visual C中成功编译,但不在gcc中编译,我得到"错误:'main'必须返回'int'".那么main()函数的返回类型'int'是一个约定(用于编译器定义),还是C的规则?
同样的事情发生在我之前,我无法解决它.它找不到主力
import java.awt.Color;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.PointerInfo;
import java.awt.Robot;
import javax.swing.JFrame;
import java.awt.AWTException;
import java.awt.HeadlessException;
import java.awt.PopupMenu;
public class Final {
static PointerInfo pointer;
static Point point;
static Robot robot;
static Color color;
private static PopupMenu Pan;
public static void main() {
JFrame F = new JFrame("RGB");
F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
F.getContentPane().add(Pan);
F.pack();
F.setSize(300, 300);
F.setVisible(true);
F.setSize(300, 300);
try {
robot = new Robot();
while (true) {
pointer = MouseInfo.getPointerInfo();
point = pointer.getLocation();
if (point.getX() == 0 && point.getY() == 0) …Run Code Online (Sandbox Code Playgroud) 所以我得到了这个小块代码.主要功能是打印主要功能.什么印刷?这是某种地址吗?
int main() {
printf( "%d", main ) ;
}
Run Code Online (Sandbox Code Playgroud) 主要方法(Java请求您在类中拥有)是否必须是静态的?例如,我有这个代码
public class Sheet {
public static void main(String[] args) {
myMethod();
}
public void myMethod() {
System.out.println("hi there");
}
}
Run Code Online (Sandbox Code Playgroud)
这给了我错误
无法对main的非静态调用方法进行静态引用
如果我清楚了,我从方法调用的任何方法都main必须是静态的,并且我从静态方法调用的每个方法都必须是静态的.
为什么我的全班(如果我们更进一步,我的整个程序)和方法必须是静态的?我怎么能避免这种情况?
c ×5
java ×4
static ×2
.class-file ×1
atexit ×1
c++ ×1
class ×1
eclipse ×1
function ×1
goto ×1
jframe ×1
methods ×1
objective-c ×1
overriding ×1
parameters ×1
printf ×1
process ×1
rgb ×1
swing ×1