这是我的代码:
#include <iostream>
#include <string.h>
using namespace std;
string& operator+(string & lhs, int & rhs) {
char temp[255];
itoa(rhs,temp,10);
return lhs += temp;
}
int main() {
string text = "test ";
string result = text + 10;
}
Run Code Online (Sandbox Code Playgroud)
结果是:
test.cpp: In function 'int main()':
test.cpp:15:26: error: no match for 'operator+' in 'text + 10'
test.cpp:15:26: note: candidates are:
/.../
Run Code Online (Sandbox Code Playgroud)
应该是test 10.
这段代码应该编译没有错误,你应该链接-lcomdlg32对话框.程序返回:0x22fcd8或者68如果我使用指针.并且应该(我认为)在对话框中返回文件用户类型的名称.
#include <windows.h>
#include <iostream>
int main() {
wchar_t szFileName[MAX_PATH] = {0};
OPENFILENAMEW ofn;
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFile = szFileName;
GetSaveFileNameW(&ofn);
using namespace std;
cout << szFileName << endl;
cout << *szFileName << endl; // also a number not a string
}
Run Code Online (Sandbox Code Playgroud) 那是:
#include "mySnippet.h"
Run Code Online (Sandbox Code Playgroud)
D甚至有这样的事吗?
使用import "myInclude.d"procuces:
test.d(5): Error: Identifier expected following import
test.d(5): Error: ';' expected
Run Code Online (Sandbox Code Playgroud) 我试过用这种方法:
#include <windows.h>
#include <iostream>
int main() {
LARGE_INTEGER size;
HANDLE hFile = CreateFile("c:\\pagefile.sys", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE) return(1);
GetFileSizeEx(hFile, &size);
CloseHandle(hFile);
std::cout << size.QuadPart << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
但正如你所看到的那样,我指向被锁定的"pagefile.sys",并且程序遇到INVALID_HANDLE_VALUE.但非系统应用程序可以查看锁定文件的大小.例如,总指挥官给我大约1GB,它必须从某个地方获得这个值(更不用说简单地右键单击该文件,但这是系统进程,因此文件没有锁定它).那么,那个案子有没有winapi电话?
我已更新代码以包含建议的更正,但它仍然无效:
#include <windows.h>
#include <iostream>
int main() {
LARGE_INTEGER size;
HANDLE hFile = CreateFile("c:\\pagefile.sys", 0, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
std::cout << "GetLastError: " << GetLastError() << std::endl;
//says: 5 (0x5) ERROR_ACCESS_DENIED
if (hFile == INVALID_HANDLE_VALUE) return(1);
GetFileSizeEx(hFile, &size);
CloseHandle(hFile);
std::cout << size.QuadPart …Run Code Online (Sandbox Code Playgroud) 我的意思是这样的情况(这当然是假代码/想法/因为我知道它不像那样工作):
int main() {
int my_int = 42;
#ifdef my_int
my_int = 43;
#else
int my_int = 43;
}
Run Code Online (Sandbox Code Playgroud)
我知道c/c ++程序看不到变量的名称,也无法判断它是否已设置但是编译器可以做到,我在这里问是否有任何方法可以将编译器指向给定的操作,例如省略或插入代码片段当遇到同一块中存在重复声明的情况时的代码.
我的意思是说:
每个人都知道这种将流重定向到输出的方法:
cout << "sometext"
Run Code Online (Sandbox Code Playgroud)
但是可以将该流传递给这样的函数:
my_function() << "sometext";
Run Code Online (Sandbox Code Playgroud) 每当我与负数GCC进行比较时,我都会看到:
error: stray '\342' in program
if ( -4 < ÔÇô3 ) return 1;
^
compilation terminated due to -Wfatal-errors.
Run Code Online (Sandbox Code Playgroud)
码:
int main() {
if ( -4 < –3 ) return 1;
return 0;
}
Run Code Online (Sandbox Code Playgroud)