프로그래밍 QnA

BrownBear의 이미지

Class를 dllexport하니 C4251이 발생합니다.

Visual Studio 2013에서 DLL을 생성할 프로젝트를 만들고 CLASS자체를 dllexport시켰습니다. 그런데 C4251이 발생합니다.

구글이나 네이버에 검색해봐도 이런 오류가 거의 발생하지 않는지 관련된 문서나 글도 거의 존재하지 않아서 질문합니다. 아래는 소스코드입니다.

#pragma once

#include
#include

using std::string;

class __declspec(dllexport) MailSlot
{
private: //Private Variables
BOOL STATUS = FALSE;
HANDLE MAILSLOT_HANDLE = INVALID_HANDLE_VALUE;
const string DEFAULT_MAILSLOT_NAME = "\\\\.\\MailSlot\\";
string MailSlot_Name;

seojh1431의 이미지

약식 데스 짜는중인데 if문 질문이요!!

if(Lbit[0]==0 && Lbit[3]==0)
{
L1=0;
}
else if(Lbit[0]==0 && Lbit[3]==1)
{
L1=1;
}
else if(Lbit[0]==1 && Lbit[3]==0)
{
L1=2;
}
else if(Lbit[3]==1 && Lbit[0]==1)
{
L1=3;
}
여기서 Lbit={0,0,1,1}; 인데.... L1에는 1값이 잘 들어가는데 왜 L2에는 0이 들어가는 걸까요....

seojh1431의 이미지

약식 데스 짜는중인데 if문 질문이요!!

if(Lbit[0]==0 && Lbit[3]==0)
{
L1=0;
}
else if(Lbit[0]==0 && Lbit[3]==1)
{
L1=1;
}
else if(Lbit[0]==1 && Lbit[3]==0)
{
L1=2;
}
else if(Lbit[3]==1 && Lbit[0]==1)
{
L1=3;
}
여기서 Lbit={0,0,1,1}; 인데.... L1에는 1값이 잘 들어가는데 왜 L2에는 0이 들어가는 걸까요....

dltkddyd의 이미지

상속받은 멤버 변수가 private이라면 파생클래스에서 초기화 할 때 오류가 발생합니다.

기반클래스에서 멤버를 protect로 만들면 별 문제 없이 파생클래스에서 초기화가 가능했는데, 기반 클래스에서 멤버를 private로 만들고 파생클래스에서 초기화를 하려하니 파생에서 그 멤버 접근시 문제가 발생하네요. 당연히 private이라 접근 불가능하기 때문일 텐데. 그렇다면 protect로 그 멤버를 선언해서 파생에서 편리하게 접근할 수 있겠지만 이런 방식은 캡슐화된 클래스에 대한 정보은닉을 망치는 길이죠. 기반 클래스의 멤버를 접근지정자를 무엇으로 해야 할까요?
아래와 같이 코드를 만들어 봤는데요.

BrownBear의 이미지

C4251을 해결하는법이 없나요?

#include

를 추가하고 using std::string;를 추가했습니다.

그리고

class __declspec(dllexport) MailSlot
{
private:
string a = "aaa";
string b = "bbb";

public:
함수들..
}
이렇게 했는데 C4251이라는 warning이 뜨네요. 검색해보니 흔하지않은 오류인것같은데.. dll에서 클래스를 익스포트하는데 저렇게뜹니다 안보이게하는거말고 해결방법이 없을까요?

BrownBear의 이미지

C++에서 string형이 안전한가요???

C#이나 Java에서는 아무렇지도 않게 string형을 사용해왔는데

C++에서 #include , using std::string;형을 추가로 해서 string을 사용하니 많은 함수에서 LPCWSTR, TCHAR, const char*등 여러가지 형을

요구를 하던데 그대로 string.c_str()형을 이용해서 형변환을 해서 코딩을하긴했는데 안전성이 어떤가요???? 즉 메모리 관리 차원에서나, 오류차원에서나 별차이없나요??

MyAbby의 이미지

fork 시 mysql 연결도 복사 될까요?

posix 라이브러리(리눅스) 에서 fork는 거의 모든 걸 자식 프로세스에 복사한다 하는데...

mysql c api 를 사용해서 접속한 연결도 그대로 자식이 쓸 수 있나요?

x

jip102의 이미지

awk 쉘스크립트 질문입니다.

안녕하세요.쉘 초보입니다,
아래와 같이 세로 값을 가로로 바꾸는 명령을 awk 로 찾아 봤는데 의미가 이해 안되는 부분이 있어서 질문을 드립니다.

cat test.txt

AAAA,
BBBB,
CCCC,

awk 'ORS=NR%3?" ":"\n"' test.txt

AAAA, BBBB, CCCC 이렇게 변형이 되는데요

생각되기는 레코드 갯수를 3으로 나누어 한열로 만드는거 같은데
여기서 NR%3 다음에 ?(물음표가) 왜 오는지요?
그리고 : 는 의미가 뭐길래 꼭 붙여야 되는지. 정규식 표현에 좀 초보여서

awk 'ORS=NR%3?" ":"\n"' test.txt 에 대해서 자세히 설명좀 부탁드려요

페이지

프로그래밍 QnA 구독하기