我正在使用配备Intel Core 2 CPU和2GB RAM的计算机.SO是Ubuntu 9.04.当我尝试编译此代码时:
;programma per la simulazione di un terminale su PC, ottenuto utilizzando l'8250
;in condizione di loopback , cioè Tx=Rx
section .code64
section .data
TXDATA EQU 03F8H ;TRASMETTITORE
RXDATA EQU 03F8H ;RICEVITORE
BAUDLSB EQU 03F8H ;DIVISORE DI BAUD RATE IN LSB
BAUDMSB EQU 03F9H ;DIVISORE DI BAUD RATE IN MSB
INTENABLE EQU 03F9H ;REGISTRO DI ABILITAZIONE DELL'INTERRUZIONE
INTIDENTIF EQU 03FAH ;REGISTRO DI IDENTIFICAZIONE DELL'INTERRUZIONE
LINECTRL EQU 03FBH ;REGISTRO DI CONTROLLO DELLA LINEA
MODEMCTRL EQU 03FCH …
Run Code Online (Sandbox Code Playgroud) 这是我真的不明白的事情:我没有看到任何真正使这个错误发生的事情.
这是班级:
namespace Engine_Main {
class SceneManager
{
public:
SceneManager(Engine& engine);
void createScene();
private:
Ogre::SceneManager * mSceneMgr;
};
}
Run Code Online (Sandbox Code Playgroud)
除了一些其他类以供参考:
#ifndef ENGINE_H
#define ENGINE_H
#include <OGRE/OgreSceneManager.h>
#include <OGRE/OgreRoot.h>
#include "scenemanager.h"
#include "playerinput.h"
namespace Engine_Main {
class Engine
{
public:
Engine();
~Engine();
void initGameLoop();
PlayerInput * getPlayerInput();
PlayerMovement * getPlayerMovement();
Ogre::Root * getOgreRoot();
private:
//fields
PlayerInput * mPInput;
PlayerMovement * mPMovement;
Ogre::Root * mRoot;
//methods
void registerInput();
void createScene();
void renderPosition();
};
}
#endif // ENGINE_H
#include "engine.h"
namespace Engine_Main { …
Run Code Online (Sandbox Code Playgroud) 当我尝试使用编译程序时make
,出现了对主错误的未定义引用。但是,main存在于我的src目录中,我对自己做错的事情感到困惑。
我假设这add_executable([title] [source])
是用于将源文件添加到编译中的命令。
基于cmake教程
cmake_minimum_required(VERSION 2.6)
project(opengl_02)
add_executable(opengl_02 opengl_02.cpp)
add_executable(main main.cpp)
add_executable(geometrics geometrics.cpp)
set (opengl_02_version_major 1)
set (openfl_02_version_minor 0)
#configure the header file to pass some of the CMake settings
#to the source code
configure_file(
"${PROJECT_SOURCE_DIR}/opengl_02_config.h.in"
"${PROJECT_BINARY_DIR}/opengl_02_config.h"
)
#add the binary tree to the search path for include files
#so that it will find tutorialconfig.h
include_directories("{PROJECT_BINARY_DIR}")
add_executable(opengl_02_config opengl_02_config.cpp)
Run Code Online (Sandbox Code Playgroud)
题
为什么我的主文件没有被引用?
我有以下标头功能:
float computeDistance3(Vector3f& vec_a, Vector3f& vec_b);
float computeDotProduct3(Vector3f& vecta, Vector3f& vectb);
float computeGeoDotProd3(Vector3f& vecta, Vector3f& vectb);
Run Code Online (Sandbox Code Playgroud)
具有以下定义
float computeDistance3(Vector3f& vec_a, Vector3f& vec_b) {
float x = vec_a.x - vec_b.x;
float y = vec_a.y - vec_b.y;
float z = vec_a.z - vec_b.z;
return sqrt((x * x) + (y * y) + (z * z));
}
float computeDotProduct3(Vector3f& vec_a, Vector3f vec_b) {
return (vec_a.x * vec_b.x)
+ (vec_a.y * vec_b.y)
+ (vec_a.z * vec_b.z);
}
float computeGeoDotProd3(Vector3f& vecta, Vector3f& vectb) {
float …
Run Code Online (Sandbox Code Playgroud) sinf
我很好奇通过包含 .c++来知道该函数是否存在于 C++ 中math.h
。
当在 Qt Creator 中查看我的自动完成功能时,它似乎没有弹出。这让我想知道是否出于某种原因它被删除了。谷歌搜索似乎也没有弹出很多参考文献;其中大部分是针对直 C 的。
那么,这一点能否得到证实呢?
给出以下两个头文件:
#ifndef EVENT_HANDLER_H
#define EVENT_HANDLER_H
#include <SFML/Window.hpp>
#include <SFML/Window/Event.hpp>
#include "window_handler.h"
class EventHandler
{
public:
EventHandler(WindowHandler & classOwner);
WindowHandler * m_windowHandler;
private:
bool m_leftKeyDown;
bool m_rightKeyDown;
bool m_upKeyDown;
bool m_downKeyDown;
unsigned int m_mouseX;
unsigned int m_mouseY;
};
#endif
Run Code Online (Sandbox Code Playgroud)
和
#ifndef WINDOW_HANDLER_H
#define WINDOW_HANDLER_H
#include <SFML/System.hpp>
#include <SFML/Window.hpp>
#include "event_handler.h"
class WindowHandler
{
public:
WindowHandler();
sf::Window m_app;
private:
EventHandler m_eventHandler;
};
#endif
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
In file included from window_handler.h:6:0,
from main.cpp:3:
event_handler.h:13:29: error: expected ‘)’ before ‘&’ token
event_handler.h:15:2: error: ‘WindowHandler’ does …
Run Code Online (Sandbox Code Playgroud) 我的源文件似乎给我一个错误,我不明白为什么它是我得到这个错误,因为它似乎有点徒劳.我还想了解的是我能做些什么才能达到同样的效果.我现在将省略细节,但如图所示,我希望这是一个全局对象指针.
码
#include "functions.h"
App::Game* game = new Game;
void display_func() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
game->render_objects();
glFlush();
}
void init(int argc, char** argv) {
glutInit(&argc, argv);
game->init_window();
glutDisplayFunc(display_func);
game->init();
glutMainLoop();
}
Run Code Online (Sandbox Code Playgroud)
编译错误
functions.cpp:3:23: error: expected type-specifier before ‘Game’
functions.cpp:3:23: error: cannot convert ‘int*’ to ‘App::Game*’ in initialization
Run Code Online (Sandbox Code Playgroud)
我知道我无法在头文件中初始化它,所以我有什么选择?
我不知道为什么会这样; 一些谷歌搜索让我相信它是由于不正确的内存管理,而其他人则说这是因为链接到可执行文件的无效.DLL.我似乎无法解决这个问题,因为我能想到的唯一.DLL是无效的.我的freeglut .DLL,但它本身没有任何问题.
我要做的就是创建一个窗口.
题
我的代码发生了什么?我做错了什么,我该如何解决?
码
WinMain
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpszCmdLine, int nCmdShow) {
WNDCLASSEX wc;
HWND hwnd;
MSG msg;
bool done;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
wc.lpszClassName = L"someclass";
if (!RegisterClassEx(&wc)) { //Error:
MessageBox(NULL, L"Class registration has failed!", L"Error!", MB_OK | MB_ICONINFORMATION);
return 0;
}
hwnd = …
Run Code Online (Sandbox Code Playgroud) 每当我做
typedef std::vector< SomeType >::iterator
我得到错误:
error: wrong number of template arguments (1, should be 5)
Run Code Online (Sandbox Code Playgroud)
为什么是这样?是否可以对c ++向量或向量迭代器进行类型定义?
假设我有以下代码:
[somevalue_field
addTarget:self
action:@selector(somevalue_fieldDidChange:)
forControlEvents:UIControlEventEditingDidEnd | UIControlEventTouchDragExit |
UIControlEVentTouchDragOutside ];
Run Code Online (Sandbox Code Playgroud)
这些UIControlEvents的按位ORing是否实际上在组合它们的效果方面一起工作,这样如果这些事件中的任何一个发生,选择器中的方法将触发?
或者是否会导致太多位串在一起以适合一个整数?
假设您有一个枚举类型,其值为50多个条目.曾经有一段时间我曾用这个数量的条目切换/设置枚举值,但仅用于检查,例如,从中检查2到5个条目.
例如,OpenGL将其大多数枚举粘贴在一个枚举类型中,称为GLenum
.这些值的范围从GL_VERTEX_SHADER
to GL_STREAM_DRAW
到GL_TRIANGLES
to GL_ARRAY_BUFFER
等.
正如您所看到的,虽然这些与更大的图景有关,但它们的使用环境并不相互关联.
我在Linux中的MinGW/GCC上生成了警告,其中每个警告都记录了其类型声明中列出的每个枚举值.我不确定VC++上是否会发生这种情况,但我认为无论如何我都会考虑它以防万一.
换句话说,生成的警告数量是TotalEnumValues - AmountOfCaseStatements
针对每个枚举值,前提是并非所有枚举都已在语句本身中进行了说明,如果您的枚举类型包含至少100个条目,则很容易导致100多个编译器警告.
我经常使用if/else来容纳这个,但是当检查枚举值超过一个条目时(这实际上非常罕见,因为枚举的目的通常需要条件逻辑来补充它),我一直都是容易使用开关/外壳,因为我发现它更美观(即使它只是编译成if/else语句,无论如何;))
那么,这个警告是否可以关闭?如果是这样,怎么样?
c++ ×9
visual-c++ ×2
bitwise-or ×1
c ×1
cmake ×1
compilation ×1
enumeration ×1
function ×1
ios ×1
iterator ×1
linker ×1
math.h ×1
nasm ×1
objective-c ×1
overloading ×1
pointers ×1
relocation ×1
syntax-error ×1
trigonometry ×1
truncated ×1
typedef ×1
vector ×1
winapi ×1