输出"HelloWorld"
方式一:std::cout << "Hello World" << endl;
方式二:cout << "Hello World" << endl;
注:
需要使用的头文件:iostream
#include <iostream>
方式一仅需要引入对应的头文件即可
方式二需要添加命名空间
using namespace std;
错误:…dll与…不一致(显示两个文件的地址,即拷贝前地址和拷贝后地址)
报错:...dll与...不一致(显示两个文件的地址,即拷贝前地址和拷贝后地址)
情形:将原工程文件进行复制,运行
解决:将动态库重新新生成
错误:C++使用UDP通信时,未修改非阻塞的情况下,recvfrom不阻塞且返回-1
使用std命名空间导致bind查找错误
将bing修改为::bind
csdn:[https://blog.csdn.net/jinking01/article/details/125371681](https://blog.csdn.net/jinking01/article/details/125371681)
声明全局变量,并在其他的cpp文件中使用
声明全局变量:`helloworld.cpp`
int a = 0;
int main(){
return 0;
}
使用全局变量:`test.cpp`
extern int a;
在工程中使用动态库中的全局变量
动态库:声明全局变量-旧:
int a = 0;
动态库:声明全局变量-新:
_declspec(dllexport) int a = 0;
工程中:使用动态库中的全局变量:
_declspec(dllimport) int a;
int main(){
std::cout<<"a:"<<a<<endl;
return 0;
}
错误:定义一个Struct,引入头文件不报错,但是使用报错。
多个头文件引用混乱,导致形成闭环。
即:
a.h引用b.h;b.h引用a.h
解决:梳理关于头文件引用逻辑,防止形成闭环。包括头文件及源文件
防止头文件被重复包含和编译
方法一:
使用宏定义避免重复引入
#ifndef _NAME_H
#define _NAME_H
//头文件内容
#endif
方法二:
使用#pragma once避免重复引入
#pragma once
//头文件内容
方法三:
使用_Pragma操作符
_Pragma("once")
//头文件内容
csdn:[https://blog.csdn.net/Lyncai/article/details/114698722](https://blog.csdn.net/Lyncai/article/details/114698722)
在主线程中创建一个子线程【可以在子线程中处理会堵塞的逻辑】
#include <iostream> #include <windows.h>
using namespace std;
DWORD WINAPI mythread(LPVOID lpParam) {
// 线程执行的代码 cout << "Thread started" << endl; return 0;
}
int main() {
HANDLE hThread; // 线程句柄
// 创建线程
hThread = CreateThread(
NULL, // 默认安全属性
0, // 默认栈大小
mythread, // 线程函数
NULL, // 传递给线程函数的参数
0, // 线程创建后立即启动
NULL // 不需要线程标识符
);
// 检查线程是否创建成功
if (hThread == NULL) {
cout << "CreateThread failed" << endl;
return 1;
}
// 等待线程结束
WaitForSingleObject(hThread, INFINITE);
// 关闭线程句柄
CloseHandle(hThread);
return 0;
}